我正在尝试用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()
和计时器完成了它。不是我真正想要的,但这样做。
我接受第一个答案......
答案 0 :(得分:0)
也许这对你有用吗? SetWindowsHookEx
安装一个钩子过程,在系统将消息发送到目标窗口过程之前监视消息
答案 1 :(得分:0)
尝试使用WH_CALLWNDPROC或WH_CALLWNDPROCRET挂钩在发送到实际窗口窗口过程之前或之后发送到挂钩的WM_ACTIVATE(窗口激活和取消激活通知)消息。