2014-02-17 109 views
0

我已经在模块中使用这个帮助类:http://tinyurl.com/pb3vxw6和我有以下问题:SetWindowsHookEx总是返回零值。正如我所提到的,这个API函数没有记录。 Win CE 6.0设备是否仍支持此API函数?我应该使用另一个API函数吗?如何以另一种方式实现键盘挂钩?处理SetWindowsHookEx零返回值

public void Start() 
{ 
    if (hHook != 0) 
    { 
     // Unhook the previouse one 
     this.Stop(); 
    } 

    hookDeleg = new HookProc(HookProcedure); 
    // in hHook returned zero value 
    hHook = SetWindowsHookEx(WH_KEYBOARD_LL, hookDeleg, GetModuleHandle(null), 0); 

    if (hHook == 0) 
    { // Exception throwed 
     throw new SystemException("Failed acquiring of the hook."); 
     // May be better? 
     // Marshal.ThrowExceptionForHR(Marshal.GetLastWin32Error()); 

    } 
} 
+1

未记录==预计不工作。如果[图像构建正确],鼠标挂钩可以工作(http://blogs.msdn.com/b/raffael/archive/2008/05/12/setwindowshookex-on-windows-mobile.aspx)。 –

+1

[QASetWindowsJournalHook](http://www.codeproject.com/Articles/122754/Using-Input-Hooks-in-Windows-Mobile)能更好地工作吗? – PaulH

+0

您的代码可以在Windows CE 6.0/5.0设备上使用? – hellboy

回答

1

这个程序或DLL?你需要DLL来获取键盘钩子(并钩住你的DLL键盘)。我应该通过hInstance而不是GetModuleHandle(null)。所以当你挂钩键盘窗口实际上调用该DLL。