2011-01-03 11 views
3

私はVoIPクライアントをやっていますが、特定の入力、たとえばKについてWM_KEYDOWNとWM_KEYUPメッセージを開始/停止したいと思います。メインウィンドウにフォーカスがあるとき、これはnpですウィンドウの外でそれを有効にしますか?たとえば、ウィンドウにフォーカスがない場合、私はデスクトップを見ているだけで、ビデオゲームでいます。このようなことをどうやって行うのですか?私はどこから始めるべきかわからない。プログラムウィンドウにフォーカスを置かずにキーボード入力をキャプチャする

また、私はあなたがどういうわけか、プログラムの外でもすべての入力をポーリングする必要があると思います、それは高価ですか?

のWin32 C++ところで

答えて

2

あなたは、キーボードフックをインストールする必要があります。http://msdn.microsoft.com/en-us/library/ms644990(v=VS.85).aspx

何かがそのキーボードメッセージを盗む場合、これは、すべての実行中のアプリケーションのためにかかわらず、非常に厄介なことができます。

+0

あなたはskype/ventriloのようなアプリケーションがこれをどのように管理していると思いますか? – KaiserJohaan

0

Wordにドキュメントを入力してKを押すと、ドキュメントに「k」の代わりにアプリケーションがポップアップすると非常に怒ります。

Windowsではデスクトップ上のアイコンにショートカットキーを割り当てることができますが、ファンクションキーまたはAltキーとCtrlキーを含む組み合わせに制限されます。デスクトップアイコンを右クリックして[プロパティ]に移動し、[ショートカットキー]と記されたフィールドを探します。

+0

考え方は、たとえばventrilo/teamspeak/skypeのようにKを押しながら録音を有効にすることです。あなたは彼らがこのようなフックをすると思いますか? – KaiserJohaan

+0

はい、そうです。 (または、生の入力関数ですが、未処理の入力関数は低レベルのフックを無効にし、他の低レベルのフックを使用していると思います。 – jnm2

関連する問題