www.pudn.com > 维文输入法源代码.rar > keybhook.bas


Attribute VB_Name = "Module2" 
Option Explicit 
Public gh As Long 
Public Const WM_USER = &H400 
Dim lg As Long 
Dim k As Long 
Declare Function setfocusapi& Lib "user32" Alias "setfocus" (ByVal hWnd As Long) 
Declare Function SetFocus Lib "user32" (ByVal hWnd As Long) As Long 
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long 
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long 
Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 
Declare Function SendMessagebynum Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 
Declare Function SendMessageCallback Lib "user32" Alias "SendMessageCallbackA" (ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal lpResultCallBack As Long, ByVal dwData As Long) As Long 
Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" (ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long, ByVal fuFlags As Long, ByVal uTimeout As Long, lpdwResult As Long) As Long 
Declare Function SetActiveWindow Lib "user32" (ByVal hWnd As Long) As Long 
Declare Function SetKeyboardHook Lib "KeybHook" (ByVal hwndPost As Long, ByVal msg As Long) As Long 
Declare Function ReleaseKeyboardHook Lib "KeybHook" () As Long 
Declare Function GetActiveWindow Lib "user32" () As Long 
Declare Function EnableWindow Lib "user32" (ByVal hWnd As Long, ByVal fEnable As Long) As Long 
Public prevWndProc As Long 
 
Function WndProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
    Dim dd As Long 
    If msg = WM_USER Then 
    gh = GetActiveWindow() 
          If wParam = vbKeyF12 And (lParam And &H80000000) <> 0 Then 
                    SetActiveWindow (0) 
                    Form1.Show 
                   dd = SetFocus(Form1.Text1.hWnd) 
                   Form1.Refresh 
                    
          End If 
        End If 
    WndProc = CallWindowProc(prevWndProc, hWnd, msg, wParam, lParam) 
End Function