2010-12-29 12 views
1

Windows上でシミュレートされたキーボード/マウス入力を検出する方法はありますか?例えば、ユーザは、自分のキーボードとsendKeys/PostMessage/On-screenキーボードとの間に何かを入力する。私は2つを区別できる方法はありますか?シミュレートされたキーボード/マウス入力の検出

EDIT:おそらく例が役に立ちます。私はゲームを作っており、キーボード/マウスメッセージを合成する実際の入力とWinAPIの区別をしたい。

+0

答えが「はい」だった場合は、他の誰かが尋ねる可能性があるので、面白い質問です。アプリケーションが合成入力を検出できないようにするにはどうすればよいですか? – Mehrdad

+0

はい、当然... – Dave

+0

@Lambert:これは簡単なことですが、私はこれまでに5つの答えを得ています。 (A)バーチャルキーボードデバイスドライバ(B)バーチャルマシン(C)PS/2キーストロークジェネレータ(D) "リアル"キーボードのロボットアーム押下キー[E] [ピッチングマシン](http://video.google.com/videoplay?docid = -5503582578132361295) –

答えて

4

は私が間違っているかもしれませんが、オンスクリーンキーボード(ユーザー入力をシミュレートする他のアプリケーションは)おそらくSendInput APIを使用しています。

SendInputを入力スタックの一番下のレベルで動作します。これは、キーボードとマウスのドライバが、ユーザが入力を生成したことをウィンドウマネージャに伝えるために使用するのと同じ入力メカニズムへのバックドアです。 出典:http://blogs.msdn.com/b/oldnewthing/archive/2010/12/21/10107494.aspx

だから入力が「本物」のキーボードから来ているかどうかを言うする方法はおそらくありません。

+3

"が実際のキーボードから来ているのにもかかわらず、これにユーザランドルートキットを使用することさえできません。 Daveは、ユーザーがキーボードで入力しているかどうかを知りたがっていました(ロボットマニピュレータアームが同じキーボードのキーを押しているとは限りません)。 –

+0

また、あなたはこれをrootkitの方法で行い、システムのSendInput APIをフックし、あなたのアプリケーションに決して触れないようにすることができます。他のすべてのユーザランドプロセスのSendInputをフックするために、このためにユーザランドルートキットを使用することさえできます。 – hanshenrik

関連する問題