[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/10/04(Tue) 15:36
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
処理中のソフトを他のアプリから終了させる方法について
環境
  WinXP
  VB6
いつもお世話になっています。

VBで作成した実行ファイルを終了させる方法についてわからない点が
あり、質問させていただきます。

VBで二つのexeファイルを作成します。仮にA.exe、B.exeとします。
Aを親とし、B.exeをシェルで起動させます。
Bにはタイマ等を使い定期的に処理をさせます。
A側の都合でBを終了させるときBのハンドルを取得して
PostMessage(mAppWnd, WM_QUIT, 0&, 0)
という方法でBを終了させているのですが、Bの状態によって、
正常に終了せずプロセスが残ってしまう場合があります。
Bの状態がどのような状態でもプロセスが残らないように終了
させたいのですが、終了したりしなかったりします。

終了させる方法についていくつかしらべたのですが、
WM_QUIT、WM_CLOSE との違いがいま少しわかりません。
場所によってはWM_CLOSEはあまり使用しないほうが良いという記述も
ありました。
プロセスを残さないように別exeを終了させる方法について
何かありましたらアドバイスお願いします。

以上よろしくお願いします。

投稿時間:2005/10/04(Tue) 17:44
投稿者名:GOD
Eメール:
URL :
タイトル:
Re: 処理中のソフトを他のアプリから終了させる方法について
> プロセスを残さないように別exeを終了させる方法について
> 何かありましたらアドバイスお願いします。
>
まずは原因特定しないと。
B側の処理が重すぎてメッセージを処理できていないため終了できていないように見えているか、
またはUnloadを通した後にLoad処理が走っていることはないですか?
    :
    処理
    DoEvents    'ここでWM_QIUT or WM_CLOSE処理(Unload)される
    処理(何かのコントロールのプロパティにアクセスとか)
    :
※ロード処理時にMsgBoxでも表示して確認してみるとか。

投稿時間:2005/10/04(Tue) 19:39
投稿者名:金次朗
Eメール:gangin_gingan_1270@mail.goo.ne.jp
URL :
タイトル:
Re^2: 処理中のソフトを他のアプリから終了させる方法について
> > プロセスを残さないように別exeを終了させる方法について
> > 何かありましたらアドバイスお願いします。
> >
> まずは原因特定しないと。
> B側の処理が重すぎてメッセージを処理できていないため終了できていないように見えているか、
> またはUnloadを通した後にLoad処理が走っていることはないですか?

WM_QIUTとWM_CLOSEでB側の終了時を確認したところ、WM_QIUTだとForm_Unloadイベントが
発生しないようで、それが直接の原因か不明ですが、B側で想定していた終了処理が行われて
いなかったようです。
A側は別な人間が担当しているためそのあたりが把握できておりませんでした。
もう少し調べてみます。

アドバイスありがとうございます。