已经知道按钮的句柄,如何判断此按钮是否被按下?
大家好,现在做一个小程序,需要监控某一个按钮是否被按下,按钮按下后对应的窗体
就会关闭,所以貌似要用钩子来拦截消息。不过因为在此方面没有经验,请大家指点一
下,怎么进行啊,谢谢。
[解决办法]
Dim ld = GetWindowLong(hButton, GWL_STYLE)
If ((ld And WS_DISABLED)) Then
//按钮被按下了
end if
[解决办法]
一个timer,一个command,一个text。
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 Const BM_GETSTATE = &HF2 Private Sub Form_Load() Timer1.Interval = 50 Timer1.Enabled = True End Sub Private Sub Timer1_Timer() Dim a As Long a = SendMessage(Command1.hwnd, BM_GETSTATE, 0, 0) Text1.Text = a If a = 108 Then MsgBox "按钮被按下了" End Sub
[解决办法]
使用Hook技术可以轻松实现,个人思路如下:
1、取得拥有当前焦点的控件的句柄(GetFocus函数可以实现该功能),判断该句柄是否和你要控制的按钮的句柄一致。
2、使用Hook函数Hook到鼠标按下的消息,判断是否点中的是该按钮(第1步中已判断)
[解决办法]