Vb 全局热建的问题(如何做到判断键盘松开按下)

来源:百度知道 编辑:UC知道 时间:2024/05/31 08:04:48
Public Function Wndproc(ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If Msg = WM_HOTKEY Then
If wParam = idHotKey Then
Dim lp As taLong, i2 As t2Int
lp.ll = lParam
LSet i2 = lp
If (i2.lWord = Modifiers) And i2.hWord = uVirtKey Then
Shell "Notepad", vbNormalFocus
End If
End If
End If
'如果不是热键信息则调用原来的程序
Wndproc = CallWindowProc(preWinProc, hwnd, Msg, wParam, lParam)

End Function

这段代码是网上找的,相信懂Vb的不陌生....
例如我注册的热建是G那么怎么判断是否按下了G.
当然这里你按下了G是执行的代码的.但你不松开的话会一直执行....
如何做到一直按着也执行1次..似乎说可以用lParam来判断,我在另外的一段代码里找到显示这个的按下和松开和一直按着的lParam玛都不一样,如何做到这种的判断呢..

设置一个标志,启动程序时标志状态为FLASE

当接受按键动作时, 比如G键,那么先校验标志位是否为FLASE,

是的时候,执行动作,且将标志位置为TRUE.
否的时候,就认为已执行过,不在执行下面的操作,直接Exit Function