他のアプリの終了を知るには?


マリー  2005-12-02 22:21:04  No: 18989

タイトルどおり、他のアプリケーションが終了したことを
知る方法を教えてください。

ネットで見る限り、起動して、終了を待つ方法はわかるのですが、
既に起動しているアプリケーションが終了したことを知りたいのです。

タイマーを作動して、OpenProcess や EnumProcessModules を使って
調べるというのも試したのですが、
タイムラグにより、うまく動作しない場合があり、
リアルタイムに知りたいのです。
できますでしょうか?


Mr.XRAY  URL  2005-12-04 03:19:13  No: 18990

WH_CBTフックで,HCBT_DESTROYWNDメッセージを処理すれば可能です.
以下を参考にしてください.

http://homepage2.nifty.com/Mr_XRAY/Delphi/plSamples/T_HookCBTActivate.htm


マリー  2005-12-08 21:18:04  No: 18991

Mr.XRAY さんありがとうございます。
参考にさせていただこうと思ったのですが、
よくわかりませんでした。

そっくりそのままでとりあえず
実行させるところまではできました。
次に終了時だけを処理するために
以下のように変更してみたのですが

DLL側の MyHookProc で
HCBT_DESTROYWND 以外をコメントにして
PostMessage を送るようにしたのですが、
クラス名が「・・」としか表示されません。

  case nCode of
{
  HCBT_ACTIVATE:
    begin
      PostMessage(pHookInfo(p)^.HostWinHandle,
                  pHookInfo(p)^.MsgID,wParam,lParam);
      :
    end;
}
  HCBT_DESTROYWND:
    begin
      PostMessage(pHookInfo(p)^.HostWinHandle,
      pHookInfo(p)^.MsgID,wParam,lParam);
    end;
{
  //メモ帳は移動リサイズさせない
  HCBT_MOVESIZE:
      :
  //メモ帳は最大化も最小化もさせない
  HCBT_MINMAX:
      :
}
  end;


Mr.XRAY  URL  2005-12-09 00:51:15  No: 18992

>クラス名が「・・」としか表示されません。

ハハハッと笑ってごまかす.
GetClassNameとGetWindowTextのコードの間違いですね.
ちゃんとPCharで取得するように修正しておきました.
Activeの方は偶然動作していたのですね.

# 誤字脱字と間違いの天才  Mr.XRAYでした.


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加