- ベストアンサー
他アプリケーションの終了
Shell関数を使って起動した他アプリケーションを 今度はその、他アプリケーションからではなく、V Bで作成したメイン画面の終了と同時に終了させた いのですが方法、又は適切な文法が分かりません。 よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
TerminateProcess()を使用すると、メモリリークが発生するのでお勧めできません。 ウィンドウを持つアプリであれば、WM_CLOSEをPostMessage()で投げてあげるのが一番安全です。 ただし、終了確認のメッセージ等が出てくるものではだめですが。
その他の回答 (2)
- taisuke555
- ベストアンサー率55% (132/236)
あまり知らずに、回答してすみません。 調べてみると、これといって、正式なプログラムというのは、なかなか無いですね。 http://www.bcap.co.jp/hanafusa/VBHLP/handle.htm こちらは、クラス名か、フォームのキャプション名で終了するサンプルですが、 特定のアプリケーションを終了するのなら、使えると思います。 これも、クラス名を先に調べておかないと、いけないようだし、 フォームのキャプション名は変化してしまうのもあるし、・・・ プログラムから、実行した任意のアプリケーションを終了するという訳にはいかなそうです。 起動した、アプリケーションのウィンドウハンドルが取得できればいいと思うのですが、 起動時に、APIのGetActiveWindowでウィンドウハンドルを取得するのは、確実な情報が、取得できるのか未確認です。 一度書いてしまったので、なんとか調べたいと思ったのですが、役に立てずすみません。
- taisuke555
- ベストアンサー率55% (132/236)
過去ログの他プロセスの終了と同じだと思います。 Dim ProcessID As Long Dim ProcessHandle As Long ProcessID = Shell("calc.exe", vbNormalFocus) ProcessHandle = OpenProcess(SYNCHRONIZE, True, ProcessID) MsgBox "[電卓] を終了させます" TerminateProcess ProcessHandle, 0& CloseHandle ProcessHandle