How to set a windows hook in Visual Basic 6(VB6)- 鼠标全局钩子(LowLevelMouseProcedure)- prjBrowser Source Code - 类似QQ窗体停靠效果 - Written by HackerJLYhttp://hackerjly.spaces.live.com/blog/cns!CE41E30095119731!1871.entry我自己写的,用WH_MOUSE_LL,因为:只有:WH_MOUSE_LL 和 WH_KEYBOARD_LL 才不用把HookProce(SetWindowsHookEx 函数的第二个lpfn参数所指向的过程)写入到:标准DLL里面,就可以实现全局钩子,其他的必须把HookProc写入到:标准DLL里面,也就是说:先用VC写一个标准DLL(里面要含有HookProc),然后再用其他语言(VB等)调用!此段内容的MSDN地址:http://support.microsoft.com/default.aspx?scid=kb;en-us;318804
别开玩笑了,只能记住用户按过哪些键,而用户的输入了什么中文,得不到。 这个可以的,画个text1,然后……………… '窗体代码 Option ExplicitPrivate Const GWL_WNDPROC As Long = -4Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Sub Form_Load() preWndProc = SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf WndProc) End SubPrivate Sub Form_Unload(Cancel As Integer) Call SetWindowLong(hWnd, GWL_WNDPROC, preWndProc) End Sub'模块代码 Option ExplicitPrivate Const WM_IME_CHAR As Long = &H286 Private Const WM_IME_COMPOSITION As Long = &H10FPrivate Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic preWndProc As LongFunction WndProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Select Case msg Case WM_IME_COMPOSITION If lParam = 8127 Then Debug.Print "输入中文了", End If Case WM_IME_CHAR Debug.Print Chr$(wParam), End Select WndProc = CallWindowProc(preWndProc, hWnd, msg, wParam, lParam) End Function'你在text1里面随便输入些汉字,在立即窗口可以看见
代码在
http://vb-bbs.vicp.net
别开玩笑了,只能记住用户按过哪些键,而用户的输入了什么中文,得不到。
这个可以的,画个text1,然后………………
'窗体代码
Option ExplicitPrivate Const GWL_WNDPROC As Long = -4Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As LongPrivate Sub Form_Load()
preWndProc = SetWindowLong(Text1.hWnd, GWL_WNDPROC, AddressOf WndProc)
End SubPrivate Sub Form_Unload(Cancel As Integer)
Call SetWindowLong(hWnd, GWL_WNDPROC, preWndProc)
End Sub'模块代码
Option ExplicitPrivate Const WM_IME_CHAR As Long = &H286
Private Const WM_IME_COMPOSITION As Long = &H10FPrivate Declare Function CallWindowProc Lib "user32.dll" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic preWndProc As LongFunction WndProc(ByVal hWnd As Long, ByVal msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Select Case msg
Case WM_IME_COMPOSITION
If lParam = 8127 Then
Debug.Print "输入中文了",
End If
Case WM_IME_CHAR
Debug.Print Chr$(wParam),
End Select
WndProc = CallWindowProc(preWndProc, hWnd, msg, wParam, lParam)
End Function'你在text1里面随便输入些汉字,在立即窗口可以看见