如题;
请问各位大侠:听说WINCE下没有支持鼠标的钩子函数,而我先实现拦截鼠标(即光笔)的输入信息,以此来屏蔽光笔的 点击功能,有哪些好方案呢?
另外我在PC机上可以很容易实现WIN32的拦截鼠标输入信息的功能,因为XP,WIN32有支持鼠标的钩子函数。
12 个解决方案
#1
搜这个 MyKeyBbdHook_CE 的源码,是键盘的,鼠标的话应该自己改一下就行了
#2
1)在WINCE下只支持以下三种钩子
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
2)wince下可以通过 coredll库调用在WINXP下通用的安装,卸载钩子函数的地址,就可以间接调用了
SetWindowsHookExW
CallNextHookEx、
UnhookWindowsHookEx
3)以上两个可以实现,最后关键是钩子WH_JOURNALRECORD只是记录鼠标、键盘的输入信息,而 WH_JOURNALPLAYBACK只是回放WH_JOURNALRECORD记录的鼠标、键盘的输入信息,但是就是不能够
拦截鼠标的输入信息啊?
所以给我们一个疑问是:在WINCE下不能够通过钩子函数来实现拦截鼠标信息吗?
那我们只有WINCE的消息机制来拦截鼠标信息吗?请问各位实现的思路怎样呢?
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
2)wince下可以通过 coredll库调用在WINXP下通用的安装,卸载钩子函数的地址,就可以间接调用了
SetWindowsHookExW
CallNextHookEx、
UnhookWindowsHookEx
3)以上两个可以实现,最后关键是钩子WH_JOURNALRECORD只是记录鼠标、键盘的输入信息,而 WH_JOURNALPLAYBACK只是回放WH_JOURNALRECORD记录的鼠标、键盘的输入信息,但是就是不能够
拦截鼠标的输入信息啊?
所以给我们一个疑问是:在WINCE下不能够通过钩子函数来实现拦截鼠标信息吗?
那我们只有WINCE的消息机制来拦截鼠标信息吗?请问各位实现的思路怎样呢?
#3
不可能支持,只你的程序不在前台没有焦点就没有MOUSE的消息。
#4
HOOK就是干这个事的,怎么不可能呢?
从鼠标有这么两个钩子,就可看出微软的意图
HOOK可以,就是不让你拦截.....
#5
to :hudaweikevin
你说的方案 搜这个 MyKeyBbdHook_CE 的源码,是键盘的,鼠标的话应该自己改一下就行了,我有个疑问:在wince 有键盘钩子的定义,
#define WH_KEYBOARD_LL 20
而鼠标却没有啊,即WINCE中没有鼠标 WH_MOUSE_LL 的定义啊?
#6
TO :luver
是的,微软这样做,有其目的,为了节省WINCE的资源,增加wince的实时性能
#7
我查找了有关资料
WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个
Hook回放通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要
WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的
所以我在wince下利用QASetWindowsJournalHook函数安装WH_JOURNALPLAYBACK钩子
代码如下:
安装函数:
hHookMouse = QASetWindowsJournalHook(WH_JOURNALPLAYBACK, MouseHookCallback, &msg);
钩子处理函数
LRESULT CALLBACK MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam) {
if(nCode >= HC_ACTION)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
PEVENTMSGMSG pMsg = (PEVENTMSGMSG)lParam;
if(pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
return (1);
}
}
}
AfxMessageBox(L"不能够触发鼠标Hook",MB_ICONINFORMATION,0);
return 1;
//return CallNextHook(hHookMouse, nCode, wParam, lParam);
}
以上代码可以捕抓到鼠标信号,但是不能拦截鼠标信号
也有资料说 用WH_JOURNALRECORD 钩子,不用WH_JOURNALPLAYBACK钩子,而当我用WH_JOURNALRECORD
钩子时候,就根本不能捕抓到鼠标信号,因为WH_JOURNALRECORD 只是记录,而WH_JOURNALPLAYBACK回放
鼠标的点击动作。所以我认为用 WH_JOURNALPLAYBACK钩子是对的。
现在问题是可以捕抓到信号,而不能拦截信号?
WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个
Hook回放通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要
WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的
所以我在wince下利用QASetWindowsJournalHook函数安装WH_JOURNALPLAYBACK钩子
代码如下:
安装函数:
hHookMouse = QASetWindowsJournalHook(WH_JOURNALPLAYBACK, MouseHookCallback, &msg);
钩子处理函数
LRESULT CALLBACK MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam) {
if(nCode >= HC_ACTION)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
PEVENTMSGMSG pMsg = (PEVENTMSGMSG)lParam;
if(pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
return (1);
}
}
}
AfxMessageBox(L"不能够触发鼠标Hook",MB_ICONINFORMATION,0);
return 1;
//return CallNextHook(hHookMouse, nCode, wParam, lParam);
}
以上代码可以捕抓到鼠标信号,但是不能拦截鼠标信号
也有资料说 用WH_JOURNALRECORD 钩子,不用WH_JOURNALPLAYBACK钩子,而当我用WH_JOURNALRECORD
钩子时候,就根本不能捕抓到鼠标信号,因为WH_JOURNALRECORD 只是记录,而WH_JOURNALPLAYBACK回放
鼠标的点击动作。所以我认为用 WH_JOURNALPLAYBACK钩子是对的。
现在问题是可以捕抓到信号,而不能拦截信号?
#8
补充一下:
只要 WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的
这句话,我不明白,我上面代码已经安装了WH_JOURNALPLAYBACK Hook但是却不能现实
正常的鼠标和键盘事件就是无效的的功能。
#9
自己顶一下,要不就沉下去了,请问哪位好心的大侠给些建议,谢谢了!!!
#10
俺是来学习的
#11
结贴了,虽然在WINCE下貌似不能实现拦截鼠标信息的功能……
#12
不太懂啊?按键事件怎么写
#1
搜这个 MyKeyBbdHook_CE 的源码,是键盘的,鼠标的话应该自己改一下就行了
#2
1)在WINCE下只支持以下三种钩子
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
2)wince下可以通过 coredll库调用在WINXP下通用的安装,卸载钩子函数的地址,就可以间接调用了
SetWindowsHookExW
CallNextHookEx、
UnhookWindowsHookEx
3)以上两个可以实现,最后关键是钩子WH_JOURNALRECORD只是记录鼠标、键盘的输入信息,而 WH_JOURNALPLAYBACK只是回放WH_JOURNALRECORD记录的鼠标、键盘的输入信息,但是就是不能够
拦截鼠标的输入信息啊?
所以给我们一个疑问是:在WINCE下不能够通过钩子函数来实现拦截鼠标信息吗?
那我们只有WINCE的消息机制来拦截鼠标信息吗?请问各位实现的思路怎样呢?
#define WH_JOURNALRECORD 0
#define WH_JOURNALPLAYBACK 1
#define WH_KEYBOARD_LL 20
2)wince下可以通过 coredll库调用在WINXP下通用的安装,卸载钩子函数的地址,就可以间接调用了
SetWindowsHookExW
CallNextHookEx、
UnhookWindowsHookEx
3)以上两个可以实现,最后关键是钩子WH_JOURNALRECORD只是记录鼠标、键盘的输入信息,而 WH_JOURNALPLAYBACK只是回放WH_JOURNALRECORD记录的鼠标、键盘的输入信息,但是就是不能够
拦截鼠标的输入信息啊?
所以给我们一个疑问是:在WINCE下不能够通过钩子函数来实现拦截鼠标信息吗?
那我们只有WINCE的消息机制来拦截鼠标信息吗?请问各位实现的思路怎样呢?
#3
不可能支持,只你的程序不在前台没有焦点就没有MOUSE的消息。
#4
HOOK就是干这个事的,怎么不可能呢?
从鼠标有这么两个钩子,就可看出微软的意图
HOOK可以,就是不让你拦截.....
#5
to :hudaweikevin
你说的方案 搜这个 MyKeyBbdHook_CE 的源码,是键盘的,鼠标的话应该自己改一下就行了,我有个疑问:在wince 有键盘钩子的定义,
#define WH_KEYBOARD_LL 20
而鼠标却没有啊,即WINCE中没有鼠标 WH_MOUSE_LL 的定义啊?
#6
TO :luver
是的,微软这样做,有其目的,为了节省WINCE的资源,增加wince的实时性能
#7
我查找了有关资料
WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个
Hook回放通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要
WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的
所以我在wince下利用QASetWindowsJournalHook函数安装WH_JOURNALPLAYBACK钩子
代码如下:
安装函数:
hHookMouse = QASetWindowsJournalHook(WH_JOURNALPLAYBACK, MouseHookCallback, &msg);
钩子处理函数
LRESULT CALLBACK MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam) {
if(nCode >= HC_ACTION)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
PEVENTMSGMSG pMsg = (PEVENTMSGMSG)lParam;
if(pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
return (1);
}
}
}
AfxMessageBox(L"不能够触发鼠标Hook",MB_ICONINFORMATION,0);
return 1;
//return CallNextHook(hHookMouse, nCode, wParam, lParam);
}
以上代码可以捕抓到鼠标信号,但是不能拦截鼠标信号
也有资料说 用WH_JOURNALRECORD 钩子,不用WH_JOURNALPLAYBACK钩子,而当我用WH_JOURNALRECORD
钩子时候,就根本不能捕抓到鼠标信号,因为WH_JOURNALRECORD 只是记录,而WH_JOURNALPLAYBACK回放
鼠标的点击动作。所以我认为用 WH_JOURNALPLAYBACK钩子是对的。
现在问题是可以捕抓到信号,而不能拦截信号?
WH_JOURNALPLAYBACK Hook使应用程序可以插入消息到系统消息队列。可以使用这个
Hook回放通过使用WH_JOURNALRECORD Hook记录下来的连续的鼠标和键盘事件。只要
WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的
所以我在wince下利用QASetWindowsJournalHook函数安装WH_JOURNALPLAYBACK钩子
代码如下:
安装函数:
hHookMouse = QASetWindowsJournalHook(WH_JOURNALPLAYBACK, MouseHookCallback, &msg);
钩子处理函数
LRESULT CALLBACK MouseHookCallback(int nCode, WPARAM wParam, LPARAM lParam) {
if(nCode >= HC_ACTION)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
PEVENTMSGMSG pMsg = (PEVENTMSGMSG)lParam;
if(pMsg)
{
if(pMsg->message == WM_LBUTTONDOWN || pMsg->message == WM_LBUTTONUP)
{
AfxMessageBox(L"已触发鼠标Hook",MB_ICONINFORMATION,0);
return (1);
}
}
}
AfxMessageBox(L"不能够触发鼠标Hook",MB_ICONINFORMATION,0);
return 1;
//return CallNextHook(hHookMouse, nCode, wParam, lParam);
}
以上代码可以捕抓到鼠标信号,但是不能拦截鼠标信号
也有资料说 用WH_JOURNALRECORD 钩子,不用WH_JOURNALPLAYBACK钩子,而当我用WH_JOURNALRECORD
钩子时候,就根本不能捕抓到鼠标信号,因为WH_JOURNALRECORD 只是记录,而WH_JOURNALPLAYBACK回放
鼠标的点击动作。所以我认为用 WH_JOURNALPLAYBACK钩子是对的。
现在问题是可以捕抓到信号,而不能拦截信号?
#8
补充一下:
只要 WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的
这句话,我不明白,我上面代码已经安装了WH_JOURNALPLAYBACK Hook但是却不能现实
正常的鼠标和键盘事件就是无效的的功能。
#9
自己顶一下,要不就沉下去了,请问哪位好心的大侠给些建议,谢谢了!!!
#10
俺是来学习的
#11
结贴了,虽然在WINCE下貌似不能实现拦截鼠标信息的功能……
#12
不太懂啊?按键事件怎么写