【发布时间】:2013-12-02 03:39:28
【问题描述】:
我正在编写一个程序并使用 SetWindowsHookEx 设置全局键盘挂钩。每当我中断我的程序(例如,使用断点或抛出异常)时,Windows 都会完全锁定,因为除了 ctrl+alt+del 之外,不再处理任何输入。我什至无法使用任务管理器关闭应用程序。
显然,这对于开发复杂的应用程序是相当不利的,我想知道这里有哪些解决方法?有什么办法可以防止挂钩像那样锁住窗户吗?我正在通过 PInvoke 在 C# 中使用 C++ 编写的 DLL。设置 Hook 是通过
EXPORT BOOL CALLBACK SetupHook (HWND hParent){
hWindow = hParent;
hhkHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardHookProc, hDllInstance, NULL);
hhkMouseHook = SetWindowsHookEx(WH_MOUSE, MouseHookProc, hDllInstance, NULL);
return TRUE;
}
然后消息被重定向
LRESULT CALLBACK KeyboardHookProc (int nCode, WPARAM wParam, LPARAM lParam){
if (nCode == HC_ACTION){
if ((lParam & 1073741824) != 1073741824){
SendMessage ((HWND) hWindow, (WM_USER + 2), wParam, lParam);
}
}
return CallNextHookEx (hhkHook, nCode, wParam, lParam);
}
【问题讨论】:
-
使用远程调试器,这样您自己的机器就不会受到影响。
-
@HansPassant 我会调查的。谢谢。
标签: c# keyboard-hook