一番上に透明なウィンドウ (WS_EX_TRANSPARENT) が浮かんでいます。
マウスの移動 (画面上の任意の場所) またはキーボード ストロークがある場合は常に、関連情報 (マウスの位置など) を表示する必要があります。
グローバルフックを使用せずにマウス/キーボードのアクティビティをキャプチャすることは可能ですか? ウイルス対策ソフトウェアは、ほとんどの場合、グローバル フックの使用に対して誤ったアラームをトリガーします。
どんなアイデアでも大歓迎です。
一番上に透明なウィンドウ (WS_EX_TRANSPARENT) が浮かんでいます。
マウスの移動 (画面上の任意の場所) またはキーボード ストロークがある場合は常に、関連情報 (マウスの位置など) を表示する必要があります。
グローバルフックを使用せずにマウス/キーボードのアクティビティをキャプチャすることは可能ですか? ウイルス対策ソフトウェアは、ほとんどの場合、グローバル フックの使用に対して誤ったアラームをトリガーします。
どんなアイデアでも大歓迎です。
GetAsyncKeyStateとGetCursorPosが役立つかもしれません。おそらく、これらの関数を 300 ~ 500 ミリ秒ごとに呼び出して、メイン スレッドにメッセージを投稿するスレッドを作成できます。
RegisterRawInputDevicesを介して生の入力メッセージを受信するように登録できます。こちらをご覧ください。RRUZ の受け入れられた回答にいくつかのリンクがあり、1 つは C# 実装を指しています。これはウィンドウメッセージで機能し、フックは関係ありません。
(このメソッドを使用すると、入力元の特定のデバイスに関する情報も取得できるため、複数のキーボードを区別できます。回答として「RegisterRawInputDevices を使用する」というほとんどの質問がここに表示されます。ただし、それを使用して入力をキャプチャすることもできます。 、ソースは気にしません。)
LASTINPUTINFO lastInputInfo = new LASTINPUTINFO();
UInt32 lastInputTick = lastInputInfo.dwTime;
return Environment.TickCount - (Int32)lastInputInfo.dwTime
このコード (C#) は、非アクティブ時間 (キーボードとマウスの両方) を返します。そのため、ユーザーが非アクティブであるため、時間を持つことができます。
キーボード/マウス アクティビティの通知を受け取ることができ ( GetLastInputInfo
)、カーソル位置を取得できることはほぼ確実です ( GetMouseMovePointsEx
)。実際のキーボード ストロークが必要ない場合は、それで十分です。だとしたら仕方ないと思いますが…。