3

Javaで一種のキーロガーを作ろうとしています。デスクトップで RSS フィードを取得できるアプリを入手したので、すばやくアクセスしたいと考えています。ところで、それができるものが必要です:

  • Java jar ファイルを起動すると、システム トレイで最小化されます。
  • ユーザーはやりたいことをします (サーフィン、映画鑑賞など)。
  • キーの組み合わせ (CTRL + I) を押すと、Java ウィンドウが開き、GUI が表示され、そこでニュースを確認したり、アプリの構成を変更したりできます。
  • これで、ウィンドウ (システム トレイ アイコン) を最小化して、コンピュータを通常どおり使用し続けることができます。

私のアプリは完全にクロス プラットフォームでなければなりません。この機能を除いて、すべてのことが行われます。私はそれをやろうとしましたが、ユーザーがウィンドウをアクティブにしKeyStrokeSystem.inいるときにのみキーの組み合わせをキャッチします。

それで、JNIまたはJNAを使用せずに(透明なオーバーレイのように)アプリの外部からキーの組み合わせをキャッチする方法はありますか(それが私の検索で得られたものです)。

ご協力いただきありがとうございます。

4

2 に答える 2

1

これはできません。今日の世界では、すべてのキーストロークを記録するだけの価値のあるオペレーティング システムはありません。

于 2012-05-31T14:32:34.830 に答える
0

いいえ、システムに依存するライブラリにドロップする必要があります。つまり、なんらかの形式の JNI を使用します。

粒度のさまざまな組み込みレベルは次のとおりです。

WHEN_ANCESTOR_OF_FOCUSED_COMPONENT

registerKeyboardAction に使用される定数です。これは、受信コンポーネントがフォーカスされたコンポーネントの祖先であるか、それ自体がフォーカスされたコンポーネントである場合に、コマンドを呼び出す必要があることを意味します。

WHEN_FOCUSED

コンポーネントにフォーカスがあるときにコマンドを呼び出す必要があることを意味する、registerKeyboardAction に使用される定数です。

WHEN_IN_FOCUSED_WINDOW

registerKeyboardAction に使用される定数です。これは、受信コンポーネントが、フォーカスのあるウィンドウ内にあるか、それ自体がフォーカスされたコンポーネントである場合に、コマンドを呼び出す必要があることを意味します。

于 2012-05-31T14:29:56.453 に答える