環境:Win2000Server VB6.0
お世話になります。
VBから、指定したプログラムを終了させたいと考えています。
TerminateProcessを使おうとしたのですが、TerminateProcessは
強制終了と同じことで、いい方法ではないようです。
(他サイトでも質問したのですが強制終了の方法しかわかりませんでした)
どなたか指定したプログラムの終了のいい方法、または、
プログラムの終了は強制終了しか方法がないようでしたら
指定したプログラムのウインドウの最小化の方法をご存知の方
いらっしゃいましたらご教授願います。
ウィンドウを検索して(FindWindowを使用)WM_CLOSEをSendMessageする。
たとえば、
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_t02.htm
http://www.bcap.co.jp/hanafusa/VBHLP/Windowhwnd.htm
最小化も可能です。
もげさんご返事ありがとうございました。
Private Sub WindowEnd()
Dim strWindowName As String
Dim hWindow As Long
Dim retValue As Long
'終了したい画面のキャプション を格納
strWindowName = "終了したい画面のキャプション"
'画面のハンドルを取得
hwindow = FindWindow(vbNullString, strWindowName)
'画面の終了
retValue = SendMessageA(hwindow, WM_CLOSE, 0&, 0&)
End Sub
で指定したプログラムを終了することができました。
くどいようなのですが、この処理を実行した時の動きと
TerminateProcessを使った時の動きで、違いが目に見えないの
ですが、"TerminateProcess=強制終了"、"SendMessage=正規の手順で終了"
と解釈してよろしいのでしょうか?
WM_CLOSEを送るのは、×ボタンを押す動作と同じです。
編集中のメモ帳など、×ボタンを押したときに確認メッセージが出るアプリ
に対して、動作を比較してみるとよろしいかと思います。
TerminateProcessを使った時はメモ帳を編集中でも
強制的に終了してしまうのに対して、
SendMessageだと、メモ帳を編集中だと、変更を保存するかの
確認メッセージが出てきました。
SendMessageの安全性が確認できました。
もげさんこの度は本当にありがとうございました!
ツイート | ![]() |