5.他のEXEのハンドルを取得しVBから終了する |
1.他のEXEのハンドルを取得しVBから終了する 2.上記プログラム使用上の留意点 3. 4. 5. 6. |
下記プログラムコードに関する補足・注意事項 動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6) Option :[Option Explicit] 参照設定:追加なし 使用 API:FindWindow SendMessage その他 :このサンプルは、 Win32 APIを使用しておりますので、ある程度Win32 API が理解できる方がお使い下さい。 :
|
1.他のEXEのハンドルを取得しVBから終了する(073) 2002.05.16 |
Option Explicit 'SampleNo=073 WindowsXP VB6.0(SP5) 2002.05.16 'クラス名又はキャプションタイトルを与えて 'ウィンドウのハンドルを取得する(P81) Private Declare Function FindWindow Lib "user32" _ Alias "FindWindowA" (ByVal lpClassName As String, _ ByVal lpWindowName As String) As Long '指定のウィンドウにメッセージを送る(P750) Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" (ByVal hwnd As Long, _ ByVal wMsg As Long, ByVal wParam As Long, _ lParam As Any) As Long 'アプリケーションをクローズする時 'ウィンドウに送られるメッセージ(P835) Private Const WM_CLOSE As Long = &H10 Dim strClassName As String 'クラス名 Dim strCaptionName As String 'キャプション名 Private Sub hwndAcquire() 'ハンドル取得及び終了処理のサブプロシージャ Dim hwnd As Long Dim ret As Long If Len(strClassName) Then 'クラス名を与えてハンドルを取得 '起動中ならハンドルが返り、起動していなければ 0 が返る hwnd = FindWindow(strClassName, vbNullString) ElseIf Len(strCaptionName) Then 'キャプション名を与えてハンドルを取得する場合 'strCaptionName = "Microsoft Excel - Book1" '電卓の場合 "電卓" hwnd = FindWindow(vbNullString, strCaptionName) End If '指定のハンドルに終了のメッセージを送る ret = SendMessage(hwnd, WM_CLOSE, 0&, 0&) End Sub Private Sub Command1_Click() 'クラス名の取得 Excel="XLMAIN" 電卓=SciCalc strClassName = Text1.Text hwndAcquire strClassName = "" End Sub Private Sub Command2_Click() 'キャプション名の取得 (Microsoft Excel - Book1 電卓) strCaptionName = Text2.Text hwndAcquire strCaptionName = "" End Sub |
2.上記プログラム使用上の留意点 |
操作としては、指定のアプリケーションのウィンドウのハンドルを取得して、そのハンドルに対して、終了のメッセージを送信しております。 Text1.Text には、クラス名を入力しておいて下さい。 Text2.Text には、キャプション名を入力しておいて下さい。 電卓等はキャプション名が固定されているが、Excel 等はブック名等が付加されるためその都度変わります。 変わるものは、クラス名で、変わらないものはキャプション名で取得した方が便利です。 このサンプルでは、次のウィンドウ情報を取得できます。 |
3. |
4. |
5. |
6. |
検索キーワード及びサンプルコードの別名(機能名) |
キャプション名を与えてハンドルを取得する クラス名を与えてハンドルを取得 指定のハンドルに終了のメッセージを送る ウィンドウを終了 プログラムの終了 指定のアプリケーションを終了させる アプリケーションを閉じる 他のアプリをクローズする アプリケーションの終了 |