ウィンドウのメッセージキューにメッセージを送る <TOP>
ウィンドウのメッセージキューにメッセージをおくります。
PostMessage 指定のウィンドウにメッセージを送る
FindWindow クラス名またはキャプションを与えてウィンドウのハンドルを取得
GetModuleFileName ロードされている事項モジュールのフルパス名を取得
左ボタン:電卓を見つけた場合そのウィンドウにCLOSE命令を送る。 右ボタン:自アプリケーションにCLOSE命令を送る。
'================================================================ '= ウィンドウのメッセージキューにメッセージを送る '= (PostMessage.bas) '================================================================ #include "Windows.bi" ' 指定のウィンドウのメッセージキューにメッセージを送る Declare Function Api_PostMessage& Lib "user32" Alias "PostMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, lParam As Any) ' クラス名またはキャプションを与えてウィンドウのハンドルを取得 Declare Function Api_FindWindow& Lib "user32" Alias "FindWindowA" (ByVal lpClassName$, ByVal lpWindowName$) ' ロードされている実行モジュールのフルパス名を取得 Declare Function Api_GetModuleFileName& Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule&, ByVal lpFileName$, ByVal nSize&) #define WM_CLOSE &H10 'ウィンドウ或いはアプリケーションをクローズ Var Shared Button1 As Object Var Shared Button2 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 '================================================================ '= 電卓が見つかった場合、電卓を終了 '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var hWnd As Long Var Ret As Long hWnd = Api_FindWindow(ByVal 0, "電卓") If hWnd <> 0 Then A% = MessageBox(GetWindowText, "電卓を終了しますか?", 1, 1) else A% = MessageBox(GetWindowText, "電卓は見つかりません!", 0, 2) Exit Sub End If If A% = 1 Then Exit Sub Ret = Api_PostMessage(hWnd, WM_CLOSE, 0, ByVal 0) End Sub '================================================================ '= 自アプリケーションを終了 '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var Ret As Long Var ExePath As String * 128 Ret = Api_GetModuleFileName(GethInst, ExePath, Len(ExePath)) A% = MessageBox(ExePath, "自アプリケーションを終了しますか?", 1, 1) If A% = 1 Then Exit Sub Ret = Api_PostMessage(GethWnd, WM_CLOSE, 0, ByVal 0) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End