窗口设置为活动时获取通知

时间:2013-01-03 00:28:05

标签: c++ winapi hook keylogger

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

2 个答案:

答案 0 :(得分:0)

也许这对你有用吗? SetWindowsHookEx

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

答案 1 :(得分:0)

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