2016-05-12 7 views
0

私はオンラインで検索してきましたが、Google上のすべての結果はJavaにしか導かれません。これはイライラしています。ウィンドウのフォーカスがないウィンドウでキーを検出する

私がしたいことは、アクティブなプログラムではなくキーボードイベントを聴くプログラムを作ることです。少なくともWindows 7でCを使用して動作しなければならない。

たとえば、myprogram.exeとother.exeがあるとします。私は同時に両方を実行し、other.exeに焦点を当て、キーを押して、側のディスプレイで実行しているキーを押して、それらを記録するmyprogram.exeを持っていたいと思っています。

誰かがガイドへのリンクを持っている場合や、これを行うために何を使用すべきかを説明する情報があれば、それは壮大なものになります。あなた自身で説明を書くことができれば、それはさらに良くなるでしょうが、関連性がある限り、文書を通しても構いません。

私はアクティブなウィンドウからの入力を聞くCでゲームを書いてきましたが、ウィンドウがフォーカスされていないときにイベントをポーリングする方法がわかりません。

+2

通常、ウィンドウフックを使用して実装されているキーロガーが必要です。 – MicroVirus

+1

グローバルフックが必要です。詳細はこちら:https://msdn.microsoft.com/en-gb/library/windows/desktop/ms644959%28v=vs.85%29.aspx?f=255&MSPPError=-2147217396#wh_keyboardhookとその例:http ://ntcoder.com/bab/2007/06/12/wh_keyboard_ll/ –

+0

は[this](https://msdn.microsoft.com/en-us/library/windows/desktop/ms646268(v=vs.85))です。 ).aspx)あなたが探しているものは? – bluepinto

答えて

1

他のプロセスで発生した「キー押下」イベントを検出する場合は、Global Hookを実装する必要があります。 SetWindowsHookEx()を使用して、キーボード入力イベント用のコールバック関数を定義することができます。

コールバック関数は、グローバルフックにするために、DLL内に存在する必要があります。

したがって、myprogram.exeは、フックを実装しているDLLをリンクする必要があります。その後、myprogram.exeはWindows上のキーボードイベントを検出できます。

以下は説明の良い例です。 http://www.codeproject.com/Articles/1264/KeyBoard-Hooks

+0

みなさん、ありがとう。すべての有用な – Aqo