windows mobile 5或更高版本(智能手机平台)中的全局键盘挂钩,如何实现? 所以我想我必须用C++来做,有人知道这个问题吗?我已经到处搜索了,我发现了一些关于WindowsCE键盘挂钩的文章,WindowsMobile就是WindowsCE,不是吗? 另一个问题:我可以使用哪个免费的编译器,用于windows mobile的ide?

windows mobile 5或更高版本(智能手机平台)中的全局键盘挂钩,如何实现? 所以我想我必须用C++来做,有人知道这个问题吗?我已经到处搜索了,我发现了一些关于WindowsCE键盘挂钩的文章,WindowsMobile就是WindowsCE,不是吗? 另一个问题:我可以使用哪个免费的编译器,用于windows mobile的ide?,windows,mobile,keyboard,hook,Windows,Mobile,Keyboard,Hook,任何WindowsCE(阅读:mobile)版本都不支持SetWindowsHookEx。实际上,通常不支持挂钩 但是,如果您愿意使用非文档/不支持的API,您可以从coredll.dll中取出,并在适当的窗口中调用它。你想要什么键盘,谷歌上说是20 实际上,您需要拉出指向以下方法的指针:、和 您的代码类似于(未经测试): //myHook.dll LRESULT myLowLevelKeyboardProc(int-nCode、WPARAM-WPARAM、LPARAM-LPARAM) { //

任何WindowsCE(阅读:mobile)版本都不支持SetWindowsHookEx。实际上,通常不支持挂钩

但是,如果您愿意使用非文档/不支持的API,您可以从coredll.dll中取出,并在适当的窗口中调用它。你想要什么键盘,谷歌上说是20

实际上,您需要拉出指向以下方法的指针:、和

您的代码类似于(未经测试):

//myHook.dll
LRESULT myLowLevelKeyboardProc(int-nCode、WPARAM-WPARAM、LPARAM-LPARAM)
{
//您还需要从coredll中提取对CallNextHookEx的引用
if(nCode<0)返回CallNextHookEx(nCode、wParam、lParam);
KBDLLHOOKSTRUCT data=*((PKBDLLHOOKSTRUCT)lParam);
//处理数据
返回CallNextHookEx(nCode、wParam、lParam);
}
//主代码,它忽略了执行此操作实际上必须使用的所有讨厌的函数指针
...
HHOOK hook=setWindowshookx(WH_KEYBOARD_LL,pMyLowLevelKeyboardProc,hmyhookdl,0);
...
//未来的某一点
解开钩(钩);
不过,我强烈建议不要这样做。我非常怀疑这段代码是否能在Windows Mobile的所有未来版本中继续工作。考虑其他方式来实现你真正追求的一切。

我不能说我对免费编译器或IDE有任何建议。除了visualstudioforc/C++之外的任何东西都会让我感到非常沮丧。我认为这更多地反映了我的习惯,而不是对任何其他工具的评论。

按照上面的URL。它有在Windows Mobile和Windows CE上工作所需的代码,也有一个很好的解释,以及一个论坛来进一步讨论


忘了说代码是C语言的,这是其他用户所要求的…

我能用C语言和本机dll调用吗?在桌面上,可以使用纯托管代码安装WHU键盘挂钩。你必须进行实验,看看Windows Mobile是否也适用。我的例子是C语言,因为它们“最有可能”工作;如前所述,这是一个不受支持的操作。我正在windows mobile上运行一个工具,它可以在后台运行并捕获用户按下的键(在全局),所以我可以在c#中执行吗?
//myHook.dll
LRESULT myLowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
  //You'll need to pull a reference to CallNextHookEx out of coredll as well
  if(nCode < 0) return CallNextHookEx(nCode, wParam, lParam);

  KBDLLHOOKSTRUCT data = *((PKBDLLHOOKSTRUCT)lParam);

  //Do something with data

  return CallNextHookEx(nCode, wParam, lParam);
}

//Main Code, which ignores all the nasty function pointers you'd ACTUALLY have to use to do this
...
HHOOK hook = SetWindowsHookEx(WH_KEYBOARD_LL, pMyLowLevelKeyboardProc, hMyHookDll, 0);
...
//Some point in the future
UnhookWindowsHookEx(hook);