• ベストアンサー

他アプリケーションの終了

Shell関数を使って起動した他アプリケーションを 今度はその、他アプリケーションからではなく、V Bで作成したメイン画面の終了と同時に終了させた いのですが方法、又は適切な文法が分かりません。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

TerminateProcess()を使用すると、メモリリークが発生するのでお勧めできません。 ウィンドウを持つアプリであれば、WM_CLOSEをPostMessage()で投げてあげるのが一番安全です。 ただし、終了確認のメッセージ等が出てくるものではだめですが。

その他の回答 (2)

回答No.3

あまり知らずに、回答してすみません。 調べてみると、これといって、正式なプログラムというのは、なかなか無いですね。 http://www.bcap.co.jp/hanafusa/VBHLP/handle.htm こちらは、クラス名か、フォームのキャプション名で終了するサンプルですが、 特定のアプリケーションを終了するのなら、使えると思います。 これも、クラス名を先に調べておかないと、いけないようだし、 フォームのキャプション名は変化してしまうのもあるし、・・・ プログラムから、実行した任意のアプリケーションを終了するという訳にはいかなそうです。 起動した、アプリケーションのウィンドウハンドルが取得できればいいと思うのですが、 起動時に、APIのGetActiveWindowでウィンドウハンドルを取得するのは、確実な情報が、取得できるのか未確認です。 一度書いてしまったので、なんとか調べたいと思ったのですが、役に立てずすみません。

回答No.1

過去ログの他プロセスの終了と同じだと思います。 Dim ProcessID As Long Dim ProcessHandle As Long ProcessID = Shell("calc.exe", vbNormalFocus) ProcessHandle = OpenProcess(SYNCHRONIZE, True, ProcessID) MsgBox "[電卓] を終了させます" TerminateProcess ProcessHandle, 0& CloseHandle ProcessHandle

参考URL:
http://www.microsoft.com/JAPAN/support/kb/articles/JP129/7/97.asp

関連するQ&A