请教,关于钩子截获按键消息实现一键功能,在线等待!谢谢
可是在我按下按键的时候它会一次启动程序的两个实例,也是按下按键的时候启动一次释放的时候启动上次,如何能实现只按下启动,释放不启动。
请大家指点。
以下是代码:
Option ExplicitPublic Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Public Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hhook As Long) As Long
Public Declare Function CallNextHookEx Lib "user32" (ByVal hhook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Declare Function ShowWindow Lib "user32" (ByVal _
    hwnd As Long, ByVal nCmdShow As Long) As LongPublic Declare Function FindWindow Lib "user32" Alias _
    "FindWindowA" (ByVal lpClassName As String, ByVal _
    lpWindowName As String) As Long
   Const SW_HIDE = 0
Const SW_SHOW = 5
Public Const VK_CONTROL = &H11
Public Const VK_DELETE = &H2E
Dim hwnd As Long
Public Const WH_KEYBOARD = 2
Public hhook As Long
Sub enablehook()
    hhook = SetWindowsHookEx(WH_KEYBOARD, AddressOf myfunc, App.hInstance, 0)
End Sub
Sub disablehook()
    Dim ret As Long
    ret = UnhookWindowsHookEx(hhook)
End SubPublic Function myfunc(ByVal ncode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If wParam = vbKeyF12 Then
       Shell "E:\游戏\拖拉机\TRACTOR.exe", vbNormalFocus
        
'        myfunc = 1
'         Beep
'        Exit Function
      hwnd = FindWindow(vbNullString, "form1")
      ShowWindow hwnd, SW_SHOW
    End If
    myfunc = CallNextHookEx(hhook, ncode, wParam, lParam)
End Function