Browse DevX
Sign up for e-mail newsletters from DevX

Tip of the Day
Language: Visual Basic
Expertise: Intermediate
Mar 23, 2000



Building the Right Environment to Support AI, Machine Learning and Deep Learning

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 Explicit
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
Private Declare Function PostMessage Lib "user32" Alias _
	"PostMessageA" (ByVal hWnd As Long, ByVal wMsg _
	As Long, ByVal wParam As Long, ByVal lParam As Long) _
	As Long
Private Const BM_CLICK = &HF5
Private Sub Check1_Click()
	Debug.Print "  Check1_Click"
End Sub
Private Sub Command1_Click()
	Debug.Print "  Command1_Click"
End Sub
Private 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 Sub
Private 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.
Marc Boorshtein
Comment and Contribute






(Maximum characters: 1200). You have 1200 characters left.



Thanks for your registration, follow us on our social networks to keep up-to-date