5264|11

92

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

~~~wince5.0下怎样实现类似的鼠标钩子函数的? [复制链接]

   
   如题;

   请问各位大侠:听说WINCE下没有支持鼠标的钩子函数,而我先实现拦截鼠标(即光笔)的输入信息,以此来屏蔽光笔的 点击功能,有哪些好方案呢?

   另外我在PC机上可以很容易实现WIN32的拦截鼠标输入信息的功能,因为XP,WIN32有支持鼠标的钩子函数。

此帖出自WindowsCE论坛

最新回复

结贴了,虽然在WINCE下貌似不能实现拦截鼠标信息的功能……  详情 回复 发表于 2009-11-11 16:31
点赞 关注
 

回复
举报

81

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
搜这个 MyKeyBbdHook_CE 的源码,是键盘的,鼠标的话应该自己改一下就行了
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
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的消息机制来拦截鼠标信息吗?请问各位实现的思路怎样呢?
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

4
 
不可能支持,只你的程序不在前台没有焦点就没有MOUSE的消息。
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 
引用 3 楼 beyondma 的回复:
不可能支持,只你的程序不在前台没有焦点就没有MOUSE的消息。

HOOK就是干这个事的,怎么不可能呢?

从鼠标有这么两个钩子,就可看出微软的意图
HOOK可以,就是不让你拦截.....
此帖出自WindowsCE论坛
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

6
 

to :hudaweikevin

  你说的方案搜这个 MyKeyBbdHook_CE 的源码,是键盘的,鼠标的话应该自己改一下就行了,我有个疑问:在wince 有键盘钩子的定义,
#define WH_KEYBOARD_LL 20
  而鼠标却没有啊,即WINCE中没有鼠标 WH_MOUSE_LL 的定义啊?
此帖出自WindowsCE论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 4 楼 luver 的回复:
引用 3 楼 beyondma 的回复:
不可能支持,只你的程序不在前台没有焦点就没有MOUSE的消息。

HOOK就是干这个事的,怎么不可能呢?

从鼠标有这么两个钩子,就可看出微软的意图
HOOK可以,就是不让你拦截.....


TO :luver
是的,微软这样做,有其目的,为了节省WINCE的资源,增加wince的实时性能

此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

8
 
我查找了有关资料
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钩子是对的。

现在问题是可以捕抓到信号,而不能拦截信号?
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 

补充一下:

只要 WH_JOURNALPLAYBACK Hook已经安装,正常的鼠标和键盘事件就是无效的

这句话,我不明白,我上面代码已经安装了WH_JOURNALPLAYBACK Hook但是却不能现实

正常的鼠标和键盘事件就是无效的的功能。
此帖出自WindowsCE论坛
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

10
 
自己顶一下,要不就沉下去了,请问哪位好心的大侠给些建议,谢谢了!!!
此帖出自WindowsCE论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

11
 
俺是来学习的
此帖出自WindowsCE论坛
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

12
 
结贴了,虽然在WINCE下貌似不能实现拦截鼠标信息的功能……
此帖出自WindowsCE论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表