ボタンクリックシミュレート <TOP>
コマンドボタンのクリックをシミュレートします。
SendMessage 指定のウィンドウにメッセージを送る
SetFocus ウィンドウにフォーカスを設定
WM_KEYDOWN(&H100) キーボードが押された
WM_KEYUP(&H101) キーボードが解放された
WM_KEYDOWN と WM_KEYUPの間にWait 10 を入れていますが、Button2 押下シミュレート状態を見やすくするためだけのものです。
'================================================================ '= ボタンクリックシミュレート '= (SendMessage3.bas) '================================================================ #include "Windows.bi" ' ウィンドウにメッセージを送信。この関数は、指定したウィンドウのウィンドウプロシージャが処理を終了するまで制御を返さない Declare Function Api_SendMessage& Lib "user32" Alias "SendMessageA" (ByVal hWnd&, ByVal wMsg&, ByVal wParam&, ByVal lParam&) ' ウィンドウにフォーカスを設定 Declare Function Api_SetFocus& Lib "user32" Alias "SetFocus" (ByVal hWnd&) #define WM_KEYDOWN &H100 'キーボードのキーが押された #define WM_KEYUP &H101 'キーボードのキーが離された #define VK_SPACE &H20 '[Space] Var Shared Button1 As Object Var Shared Button2 As Object Button1.Attach GetDlgItem("Button1") : Button1.SetFontSize 14 Button2.Attach GetDlgItem("Button2") : Button2.SetFontSize 14 Var Shared Flg As Byte '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var Ret As Long Flg = 1 Ret = Api_SetFocus(Button2.GethWnd) Ret = Api_SendMessage(Button2.GethWnd, WM_KEYDOWN, VK_SPACE, 0) Wait 10 Ret = Api_SendMessage(Button2.GethWnd, WM_KEYUP, VK_SPACE, 0) End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() If Flg = 1 Then A% = MessageBox(GetWindowText, "【Button2】クリックがシミュレートされました!", 0, 3) Else A% = MessageBox(GetWindowText, "【Button2】が直接クリックされました!", 0, 2) End If Flg = 0 End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End