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