请教有关鼠标勾子的问题,我的勾子无法被触发勾取到消息 我做的是本地hook,只是想hook到自己程序中的鼠标消息。挂WH_MOUSE做的hook可以触发,但没法得到键盘和鼠标键的状态判断。即如鼠标的WM_MOUSEMOVE消息那样能在wPalam中得到消息产生时键盘的ctrl和shift以及鼠标左右键是否被按下的状态。因此我试着用WH_MOUSE_LL、WH_GETMESSAGE、WH_CALLWNDPROC、WH_SYSMSGFILTER做hook,但都没有办法被触发。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你应该用全局变量在hook中记录鼠标键按下弹起状态。 谢谢,这的确是一个解决鼠标按下与否的思路。但是知道键盘的按键状态。我更想弄清楚怎么才能挂上WH_MOUSE_LL、WH_GETMESSAGE、WH_CALLWNDPROC、WH_SYSMSGFILTER做钩子,这样返回的参数中有完整的鼠标消息的MSG可以做得更灵活更有效。所以继续请教为什么用WH_MOUSE_LL、WH_GETMESSAGE、WH_CALLWNDPROC、WH_SYSMSGFILTER做钩子不能触发色取到消消,特别是WH_SYSMSGFILTER和WH_CALLWNDPROC 用这个函数可以知道鼠标及键盘的状态,不用全局钩子SHORT GetAsyncKeyState(int vKey); 请问,WH_MOUSE_LL、WH_GETMESSAGE、WH_CALLWNDPROC、WH_SYSMSGFILTER,这些类型的hook是全局的吗?必须在dll中使用是不是? Hook 就安装来说有两种类型,线程Hook和全局Hook线程的钩取自己线程里的消息,全局的钩取所有线程的,每种hook都可以设为线程的也可以设为全局的,如果是安装全局hook的话就会用到Dll(有两种hook例外),线程的不用用到Dll 但是我在编译WH_MOUSE_LL型hook时错误,说这个常量未定义。我有加入windows.h也试着加入了winuser.h也不行。看了这个wh_mouse_ll的定义,可能就是这个原因。谁给我解释一下下面的预处理语句的意思。应该是这个导至编译时报错。这个WH_MOUSE_LL和WH_MOUSE_LL是不是低级键盘鼠标hook?#if (_WIN32_WINNT >= 0x0400)#define WH_KEYBOARD_LL 13#define WH_MOUSE_LL 14#endif // (_WIN32_WINNT >= 0x0400) WH_KEYBOARD_LL 和 WH_MOUSE_LL只能在NT5.0以上版本使用(也就是WINDOW2000以上版本)_WIN32_WINNT定义的是NT的版本你在你自己的StdAfx.h文件中修改一下就可以了,加上如下的语句:#ifdef _WIN32_WINNT#undef _WIN32_WINNT#endif#define _WIN32_WINNT 0x0500 [我的2010]CSDN win32 SDK通过对话框如何将文件里面的内容给读取到EDIT里面呢? 关于非模态对话框的问题 VC关于读取txt文件信息问题,我的代码哪里有错? 关于在网页中的ActiveX控件下载的问题 好难啊? 关于系统挂钩和数据回填,高手请进!! 在ATL中接口里的方法如何定义HWND窗口句柄类型的参数? 想学数据结构(c++的),请推荐及本好书. 一个有点难度的问题(关于MFC) SQL sever下的表中的NULL值映射到CRecordset对象中,其相应的字段是什么值? 怎样画这样的坐标线
SHORT GetAsyncKeyState(int vKey);
线程的钩取自己线程里的消息,全局的钩取所有线程的,每种hook都可以设为线程的也可以设为全局的,如果是安装全局hook的话就会用到Dll(有两种hook例外),线程的不用用到Dll
#if (_WIN32_WINNT >= 0x0400)
#define WH_KEYBOARD_LL 13
#define WH_MOUSE_LL 14
#endif // (_WIN32_WINNT >= 0x0400)
WH_KEYBOARD_LL 和 WH_MOUSE_LL只能在NT5.0以上版本使用(也就是WINDOW2000以上版本)_WIN32_WINNT定义的是NT的版本
你在你自己的StdAfx.h文件中修改一下就可以了,加上如下的语句:#ifdef _WIN32_WINNT
#undef _WIN32_WINNT
#endif
#define _WIN32_WINNT 0x0500