devxlogo

Send a Click Message

Send a Click Message

Recently, I turned to Windows messaging to manipulate certain dialogs by simulating button clicks programmatically. I looked through my API references and found only the WM_LBUTTONDOWN and WM_LBUTTONUP messages. I couldn’t get them to work until I found, on the MSDN Web site, a message that’s not documented in the API text that comes with VB?BM_CLICK = &HF5. You set lParam and wParam both to zero to use this message. It works perfectly when it’s sent directly to the button. SendMessage is a synchronous call. If the button you want to click might take some time to process its work, and you’d rather make an asynchronous click, use PostMessage instead. This sample shows how to use the BM_CLICK message. Paste this code into a new form, with two command buttons, one option button, and one checkbox:

 Option ExplicitPrivate Declare Function SendMessage Lib "user32" Alias _	"SendMessageA" (ByVal hWnd As Long, ByVal wMsg _	As Long, ByVal wParam As Long, lParam As Any) As LongPrivate Declare Function PostMessage Lib "user32" Alias _	"PostMessageA" (ByVal hWnd As Long, ByVal wMsg _	As Long, ByVal wParam As Long, ByVal lParam As Long) _	As LongPrivate Const BM_CLICK = &HF5Private Sub Check1_Click()	Debug.Print "  Check1_Click"End SubPrivate Sub Command1_Click()	Debug.Print "  Command1_Click"End SubPrivate Sub Command2_Click()	Debug.Print "Entering Command2_Click"	Call SendMessage(Check1.hWnd, BM_CLICK, 0, ByVal 0&)	Call SendMessage(Option1.hWnd, BM_CLICK, 0, ByVal 0&)	Call SendMessage(Command1.hWnd, BM_CLICK, 0, ByVal 0&)	Debug.Print "Exiting Command2_Click"End SubPrivate Sub Option1_Click()	Debug.Print "  Option1_Click"End Sub

The BM_CLICK message works on any button-class control. This includes option buttons and checkboxes.

devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist