【发布时间】:2013-01-03 00:28:05
【问题描述】:
我正在尝试用 C++ 编写一个基本的键盘记录器,到目前为止,我设法使用 win api 安装了一个低杠杆键盘挂钩。每次按下一个键时它都会通知我。 我想做类似的事情,每次焦点切换到另一个窗口时通知我,所以我知道用户正在输入哪个窗口。 我试图设置一个 HW_CBT 钩子,但它没有给我任何通知。
最好的方法是什么?
编辑:
我已经编辑了这段代码:
LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam) {
cout<<"event";
return CallNextHookEx(0, nCode, wParam, lParam);
}
和SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, NULL, NULL);
我的程序中也有这个:
while(true)
GetMessage(&msg,0,WM_KEYFIRST, WM_KEYLAST);
我在运行程序时仍然没有收到任何通知,除了关于击键的通知。
编辑 2!!
我使用GetWindowText()、GetForegroundWindow() 和计时器完成了它。不是我想要的,但这会做。
我会接受第一个答案...
【问题讨论】:
-
刚刚删除了我推荐 SetWindowsHookEx() 的答案,注意到您尝试了 WH_CBT 挂钩。尝试使用 WH_CALLWNDPROC 挂钩来监控所有消息。
-
试试看……仍然没有收到任何通知……