9

キーボードで入力したものをすべてキャプチャして、さまざまな方法で保存する必要があります。.Net用のC#で記述したいのですが、実際には何でもかまいません。この「キーロガー」を書く理由は簡単です。

最近、私はペレグリンゲーミンググローブの所有者になりました。指でジェスチャーをしてコマンドを出すことができるのはとてもクールなことですが、同時に非常に薄い手袋なので、その手でほとんど不快感を感じることなく入力できます。

また、他のアクションと同じようにマクロを作成することで生産性を大幅に向上させることができるAutoHotkeyと呼ばれる素晴らしいプログラムを見つけました。任意のキーを他のキーまたは一連のキーまたはコマンドにバインドできます。

問題は、「これが私が最もしていること」と「これが私がめったに使用しないこと」のようにそれを言うことができないということです。本当に、ページダウンまたはページダウンで、どのキーをもっと使用するかわかりますか?エスケープまたはレイアウトスイッチ(ctrl-shiftまたはalt-shift)よりも頻繁にalt + tabを使用しますか?わかりません。統計データがなければ、どのアクションを自動化するか、より簡単なインターフェースに切り替える必要があるかわかりません。

そのため、バックグラウンドで実行し、入力したすべてのものをログに記録するプログラムを作成したいと思います。次に、このプログラムは、アクションの1次、2次、および3次のヒストグラムを保存します(たとえば、Enterキーを押すなど、単一のキーを押した回数、Altキーを押しながらTabキーを押した後の2つのキーを連続して押した回数を保存します。 ctrl、alt、削除、またはctrl、shift、escapeなどの3つのキーを連続して押した回数)

次に、作業/再生などに時間を費やした後、PCとの対話速度を向上させるために、そのインターフェイス(グローブ)にバインドするか、AutoHotkeyプログラムで自動化する必要があるアクションの種類に関する情報を入手します。

言い換えれば、単純な科学実験、ただ楽しみと進歩のために:)

4

2 に答える 2

5

グローバル キーボード ハンドラが必要です。

これが Windows の場合、Windows API を使用し、以下を使用する必要があります。

SetWndowsHookEx

UnhookWindowsHookEx

CallNextHookEx

キーボードとマウスのイベントをリッスンするには、グローバルな「フック」を設定する必要があります。

これを行い、.Net キーボードおよびマウス イベント引数を発生させる C# クラスがありますが、このタイプのアクティビティが悪意のある手段に使用される可能性があるため、コードをオンラインに投稿するつもりはありません。

なぜ私たちはこれをしたのですか?アプリケーションに PowerPoint を組み込みましたが、ユーザーが PowerPoint スライドを表示しながら編集することを望まなかったので、C# アプリケーションから、マウスとキーボードのイベントが Powerpoint コントロール内にある場合に監視およびインターセプトするフックを設定しました。うまくいきましたが、次のことを確認する必要がありました。

それらはアプリケーションで制御され、アプリケーションはアクティブでした。フックを設定すると、必要なときにのみ必要な特定のキーボード操作をキャンセルしていたため、他のアプリケーションを含むすべてをリッスン/キャプチャします。

ここに API リンクがあります。

http://msdn.microsoft.com/en-us/library/ff468842(v=VS.85).aspx

于 2011-06-24T17:00:08.333 に答える