PB 電子会議室

コメント

発言No. 更新日 題名(クリックすると発言内容と関連するコメントが表示されます)
13767 00/11/02 17:08:43 RE(1):PB6.5: 他の言語で作成されたアプリケーションをPBアプリケーションから強制終了させる方法 By Taka
13748 00/11/01 12:03:17 PB6.5: 他の言語で作成されたアプリケーションをPBアプリケーションから強制終了させる方法 By K.I

カテゴリ:スクリプトの記述
日付:2000年11月02日 17:08 発信者:Taka
題名:RE(1):PB6.5: 他の言語で作成されたアプリケーションをPBアプリケーションから強制終了させる方法

K.Iさん、こんにちは。

>現在、通信を行うVBで作成したアプリケーションをPBアプリケーションから起動させて
>いるのですが、通信中に何らかの障害でVBアプリケーションが固まってしまった場合に
>PBアプリケーションのほうで強制終了をかけようと思っています。

>API関数のFindWindowAとPost関数を使って処理を終わらせようとしてみたのですが、
>通信中(例えば、ポートが開いている場合)では、うまくVBアプリケーションを終了
>させる事ができませんでした。それを無視してVBアプリケーションを強制終了する
>方法はあるでしょうか?

VBアプリケーションに限らず、プロセスを強制終了するには TerminateProcess というAPIで出来ます。
プロセスハンドルが必要になるので、もしRun関数などで起動しているのなら、CreateProcessで起動するように
修正してください。返されたPROCESS_INFO構造体からハンドルを取得できます。
(CreateProcessの使い方については、発言番号7538を参照)

だたし、通信ビジーになっているプロセスを強制終了させることは、あまり得策ではないと思います。
メモリリークだけならまだしも、サーバ側にゴミが残ったり、予期しないエラーの原因になる恐れもあります。
どういった仕組みで処理しているのか解りませんが、非同期制御が可能ならば非同期モードで実行し、任意に
中断可能な作り方にしておいたほうが賢明です。
こうしておけば、中断した上で正規手続きにしたがって終了させることができます。

それでも固まってしまったら、利用者が[ctrl]+[Alt]+[Delete]キーを押して対処する事としても
差し支えないように思います。

付加情報:

PowerBuilder Version (記載なし)

Client SoftWare

OS Windows98
DBMS その他
Browser (記載なし)

Server SoftWare

OS (記載なし)
DBMS (記載なし)
WebServer (記載なし)

PowerSpaceの運営は、パワーフューチャー株式会社が行っております。
Copyright © 2013 Power Future Co., Ltd.