ボタンクリックシミュレート          <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