0

問題があり、次の問題へのアプローチが必要です。

アプリケーション「A」があるとしましょう。このアプリ「A」は、ライセンスをお持ちの方のみご利用いただけます。ライセンスが無料の場合、このアプリケーションを使用してライセンスを「予約」するユーザーが数人います。しかし、ライセンスを「予約」したユーザーが、「予約解除」し忘れることがあります。

主な質問:ユーザーがアプリケーションを X 分間使用していない (アプリケーションがアイドル状態である) かどうかをどのように検出できますか? ユーザーがコンピューター上でアクティブでないという意味ではありません。ユーザーはコンピューター上で別のアプリケーションを使用していますが、この特定のアプリケーション "A" は使用していません。(ユーザーは、ライセンスを使用できるようにログインする必要があります。つまり、アプリケーションを終了したり、アプリケーションを最小化したり、アプリケーションが他のアプリケーションのバックグラウンドにあるだけでも、ライセンスを保持したままになります)

GetLastInputInfo について読みましたが、私の状況では役に立たないと思います。私が欲しいのは、ユーザーがアプリケーションと対話している場合に情報を取得することだけです。

私はC++を使用しています。OS: Windows 10 x64bit。

4

1 に答える 1

0

アプリケーションが入力キューをフックし、使用されているアプリケーションに適用できると思われるメッセージ (おそらく keyup/down/mousemove はおそらく WM_TIMER や WM_PAINT ではない) をフィルター処理し、次のいずれかを受信して​​から十分な時間が経過したと判断した場合はどうでしょうか。これらのメッセージ (選択したメッセージの 1 つが受信されるたびにタイマーを設定します)、それがライセンス キーを解放するときです。

于 2016-10-31T14:46:45.160 に答える