1

私はC++で基本的なキーロガーを作成しようとしていますが、これまでのところ、winapiを使用してローレバーキーボードフックをインストールすることができました。キーが押されるたびに通知されます。フォーカスが別のウィンドウに変更されるたびに通知するのと同じようなことをしたいので、ユーザーが入力しているウィンドウがわかります。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

多分これはあなたに役立つかもしれませんか?SetWindowsHookEx

システムがメッセージを宛先ウィンドウプロシージャに送信する前にメッセージを監視するフックプロシージャをインストールします

于 2013-01-03T00:33:26.770 に答える
0

WH_CALLWNDPROCまたはWH_CALLWNDPROCRETフックを使用して、実際のウィンドウのウィンドウプロシージャに送信される前または後に、フックに送信されるWM_ACTIVATE(ウィンドウのアクティブ化と非アクティブ化の両方の通知)メッセージを取得してみてください。

于 2013-01-03T00:41:09.623 に答える