全局钩子和局部钩子

搜集了许多的资料,也作了各类尝试,可是还不是很明白具体的分类.html

根据目前所掌握的总结一下:windows

局部钩子:函数

SetWindowsHookEx(User32.HookType.WH_KEYBOARD, MouseHookProced,0, AppDomain.GetCurrentThreadId());

注意事项:第一个参数是WH_KEYBOARD相似的局部钩子参数,spa

第二个是回调函数,能够再当前DLL(exe)中也能够在其余的DLL中线程

第三个参数可设为0就能够,多是忽略这个参数了吧.code

第四个参数是当前线程的ID,只在当前线程中有效.htm

 

全局钩子:blog

hHook = SetWindowsHookEx(User32.HookType.WH_KEYBOARD_LL, MouseHookProced, (IntPtr)0, 0);

第三个参数仍是能够设置为0,get

第四个参数必须设为0,即设置为全局钩子回调函数

一直想找到一个能够使用WH_KEYBOARD设置全局钩子的方法,过程当中也设置了第三个参数,DLL的HID,可是hHook都是0,设置失败.应该有这样的方法的,再找找.

有的资料也说net不支持.

参考资料: http://www.cnblogs.com/firstyi/archive/2008/01/08/1030761.html

等..

 

键盘钩子:

局部钩子:

KeyboardProc参数解析 

首先根据nCode过滤

当使用WH_KEYBOARD设置局部钩子的时候,wParam就是按下的键码.lParam是Keystroke Message Flags,每一位表明一个标志位.能够使用Convert.ToString((int)lParam,2)装换为二进制,判断是否够32位,不够的话补0,而后读取想要的信息.如:10011110000000000000001,能够获取是按下仍是弹起.KeyboardProc callback function.第一位是0表示按下,是1表示弹起.

 

全局钩子:

LowLevelKeyboardProc 

WPARAM包含弹起和按下的信息,ncode是0,lparam是一个KBDLLHOOKSTRUCT ,具体信息参考链接.

相关文章
相关标签/搜索