1

我正在尝试用 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()和一个计时器完成了它。不是我想要的,但这会做。我只会接受第一个答案...

4

2 回答 2

0

尝试使用 WH_CALLWNDPROC 或 WH_CALLWNDPROCRET 钩子在发送到实际窗口的窗口过程之前或之后将 WM_ACTIVATE(窗口激活和取消激活的通知)消息发送到您的钩子。

于 2013-01-03T00:41:09.623 回答
0

也许这对你有用?SetWindowsHookEx

在系统将消息发送到目标窗口过程之前安装一个挂钩过程来监视消息

于 2013-01-03T00:33:26.770 回答