5810|12

70

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

wince中hook的问题 [复制链接]

看了很多资料wince下只支持三种hook.
按照资料加载coredll.dll,在模拟器上调试.使用WH_KEYBOARD_LL安装后返回的hook是0x01.而且不进处理程序,使用WH_JOURNALRECORD,安装后返回的是0.
请问是模拟器的问题吗?
代码几乎是和网上的一样
此帖出自WindowsCE论坛

最新回复

得到的值是多少我不清楚,不过我的可以提示("set hook 成功"),  详情 回复 发表于 2008-7-29 15:25
点赞 关注
 

回复
举报

82

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
键盘的HOOK,LZ是如何实现与加载的?

和模拟器的关系不大。
此帖出自WindowsCE论坛
 
 
 

回复

98

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
试试这个,我使用使用WH_KEYBOARD_LL已经可以正常使用了

  1. BOOL ActivateKBHook(HINSTANCE hInstance)//, HOOKPROC LLKeyboardHookCallbackFunction)
  2. {
  3.         //we need to manually load these standard Win32 API calls
  4.         //MSDN states that these aren't supported in WinCE
  5.         SetWindowsHookEx                = NULL;
  6.         CallNextHookEx                        = NULL;
  7.         UnhookWindowsHookEx                = NULL;

  8.         //now load the coredll.dll
  9.         g_hHookApiDLL = LoadLibrary(_T("coredll.dll"));
  10.         if(g_hHookApiDLL == NULL)
  11.         {
  12.                 //something is awfully wrong
  13.                 //the dll has to be present
  14.                 return false;
  15.         }
  16.         else
  17.         {
  18.                 //load the SetWindowsHookEx API call
  19.                 //the SetWindowsHookEx function installs an application-defined hook procedure into a hook chain.
  20.                 //You would install a hook procedure to monitor the system for certain types of events.
  21.                 //here we use use the hook to monitor kyeboard events
  22.                 SetWindowsHookEx = (_SetWindowsHookExW)GetProcAddress(g_hHookApiDLL, _T("SetWindowsHookExW"));
  23.                 if(SetWindowsHookEx == NULL)
  24.                 {
  25.                         //this means that MS has really stopped supporting this API in WinCE
  26.                         return false;
  27.                 }
  28.                 else
  29.                 {
  30.                         //install the KB hook
  31.                         //the hande needs to be saved for default processing of the events and to uninstall the hook, once we are done with it
  32.                         g_hInstalledLLKBDhook = SetWindowsHookEx(WH_KEYBOARD_LL, LLKeyboardHookCallbackFunction, hInstance, 0);
  33.                         if(g_hInstalledLLKBDhook == NULL)
  34.                         {
  35.                                 MessageBox(NULL,TEXT("set hook error"),TEXT("error"),MB_OK);//我的
  36.                                 return false;
  37.                         }
  38.                         else MessageBox(NULL,TEXT("set hook 成功"),TEXT("error"),MB_OK);//我的程序
  39.                 }

  40.                 //load CallNextHookEx() API call
  41.                 //the CallNextHookEx function passes the hook information to the next hook procedure in the current hook chain.
  42.                 //we use this call for default processing of events.
  43.                 CallNextHookEx = (_CallNextHookEx)GetProcAddress(g_hHookApiDLL, _T("CallNextHookEx"));
  44.                 if(CallNextHookEx == NULL)
  45.                 {
  46.                         return false;
  47.                 }

  48.                 //load UnhookWindowsHookEx() API
  49.                 //the UnhookWindowsHookEx function removes a hook procedure installed in a hook chain by the SetWindowsHookEx function.
  50.                 //we use this call to unistall the hook.
  51.                 UnhookWindowsHookEx = (_UnhookWindowsHookEx)GetProcAddress(g_hHookApiDLL, _T("UnhookWindowsHookEx"));
  52.                 if(UnhookWindowsHookEx == NULL)
  53.                 {
  54.                         return false;
  55.                 }
  56.         }

  57.         //all the APIs are loaded and the application is hooked
  58.         return true;
  59. }
复制代码
此帖出自WindowsCE论坛
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
我使用的是全局hook,写了个dll
此帖出自WindowsCE论坛
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

5
 
HINSTANCE hInstance怎么赋值呢?
我也是写的dll,全局Hook.我把hInstance赋值为theApp.m_hInstance.因为wince的winmain第一个参数是handle
此帖出自WindowsCE论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

6
 
LLKeyboardHookCallbackFunction这个函数需要定义为dllexport吗?
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

7
 
WH_JOURNALRECORD在wince下能实现吗?
此帖出自WindowsCE论坛
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

8
 
引用 4 楼 helen_alone 的回复:
HINSTANCE hInstance怎么赋值呢?
我也是写的dll,全局Hook.我把hInstance赋值为theApp.m_hInstance.因为wince的winmain第一个参数是handle
[/quote]

我是这样调用钩子的,其中,AdKeyboardHook是dll文件的名字。
ActivateKBHook(GetModuleHandle(_T("AdKeyboardHook")));///////调用dll,挂钩


引用 5 楼 helen_alone 的回复:
LLKeyboardHookCallbackFunction这个函数需要定义为dllexport吗?

不用的。
我只 __declspec(dllexport) BOOL ActivateKBHook(HINSTANCE hInstance);
还有一个
__declspec(dllexport) BOOL DeactivateKBHook();



[quote]引用 6 楼 helen_alone 的回复:
WH_JOURNALRECORD在wince下能实现吗?


这个没试过
此帖出自WindowsCE论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

9
 
按照你的一样写了,还是得到hook是0x01
此帖出自WindowsCE论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

10
 
SetWindowsHookEx        = NULL;
CallNextHookEx            = NULL;
UnhookWindowsHookEx        = NULL;
g_hHookApiDLL = LoadLibrary(_T("coredll.dll"));

SetWindowsHookEx = (_SetWindowsHookExW)GetProcAddress(g_hHookApiDLL, _T("SetWindowsHookExW"));
      
CallNextHookEx = (_CallNextHookEx)GetProcAddress(g_hHookApiDLL, _T("CallNextHookEx"));
           
UnhookWindowsHookEx = (_UnhookWindowsHookEx)GetProcAddress(g_hHookApiDLL, _T("UnhookWindowsHookEx"));
           
函数的值都能得到。
glhHook = SetWindowsHookEx(WH_KEYBOARD_LL, (int)MouseProc, gInstance, 0);
此帖出自WindowsCE论坛
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

11
 
没有人遇到过吗?
安装hook得到0x01
此帖出自WindowsCE论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
..
此帖出自WindowsCE论坛
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

13
 
引用 10 楼 helen_alone 的回复:
没有人遇到过吗?
安装hook得到0x01


得到的值是多少我不清楚,不过我的可以提示("set hook 成功"),
此帖出自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
快速回复 返回顶部 返回列表