2

ユーザーが自分のマシンで実行されているさまざまなアプリケーションとどの程度やり取りしているかを追跡できるようにする必要があります。私にとって論理的に思えたのは、ウィンドウ フォーカス イベントのログをタイムスタンプ付きで保持することでした。これにより、その日のうちにどのアプリケーションがフォーカスされていたかがわかります。

このアプリケーションでは、Java で簡単にできることを他にもいくつか行います。ただし、Java で GUI プログラミングを行ったことがないため、awt API を介して OS レベルのウィンドウに関する情報を取得できるかどうかはわかりません。それは可能ですか?JNI を介してこれを行う別の方法はありますか、それともネイティブ アプリケーションでこれを行う必要がありますか?

PS: この要件が少し悪質に聞こえることは承知していますが、私はこれが技術的に可能かどうかを判断するためにここにいるだけです。メッセンジャーを撃たないでください、これは私の考えではありません。:)

4

8 に答える 8

1

ウィンドウテストライブラリを探すかもし​​れません。それらのいくつかは、win32ネイティブイベントを作成してインターセプトするために作られています。

于 2009-03-03T00:57:49.997 に答える
0

また、Windowsタスクリストを監視してユーザーが使用するアプリケーションをトレースすることもできます。Javaでコンソールを読み取るのは簡単で、そこからプロセスデータを取得することもできますが、重い文字列処理はほとんど必要ありません。 getは文字列形式になり、必要なデータを取得して便利にする必要があります。さらにサポートが必要な場合は、トレース用にそのデータを監視および保存するためのコードを提供できますが、このソリューションはオーバーライドしません。ウィンドウイベント、それはタスク情報を提供します、

于 2011-09-05T07:25:35.870 に答える
0

別の言語の使用を検討する必要があると思います。
たとえば、C ++のように、この種の問題に対応している他の言語があります:)

于 2009-03-02T23:59:03.773 に答える
0

基本的に、他のアプリケーションへの OS 通知にアプリを含めるように求めています。おそらく、他のアプリを子プロセスとして起動するアプリを用意するか、ルートキット API のようなものを使用して、通常のアプリケーションに許可されている以上のアクセス許可を確立する必要があります。

ユーザーがアプリケーションと対話している時間を確認することが目標の場合、アプリケーションにスケジュールされている CPU 時間を調べるか、I/O イベント間の遅延を調べてそれらを統計にマッピングする方法から、大まかなアイデアを得ることができます。ユーザーのアクティブ度について。

それ以外の場合は、スパイウェアの開発者と連絡を取り、必要なものを入手できると思います。

于 2009-03-03T00:40:38.837 に答える
0

Java からこれを行いたいが、独自のネイティブ コードを記述したくない場合は、SWTを試すことができます。プラットフォームに依存しない方法で目的を達成できるとは思えませんが、Windows 固有のクラス、特に org.eclipse.swt.internal.win32.OS をいじることができます。

于 2009-03-03T00:40:42.363 に答える