GetForegroundWindow()関数を使用してデスクトップ上にフォアグラウンドウィンドウを検出しました。各アプリケーションがフォアグラウンドでどれくらいの時間を費やしているかを追跡し、フォアグラウンドで再開するたびにデータベースで更新する必要があります。 ウィンドウをフォーカスしていないときにカウンタを設定するか、見つけ出すAPIはありますか?フォアグラウンドアプリケーションがアクティブである時間を追跡する方法
1
A
答えて
1
SetWindowsHookEx
によってサポートされているWH_CBT
フックタイプがあります。これは、ユーザが別のウィンドウまたはアプリケーションに切り替えるたびに発生します。 How to install Windows hooks from C#。
ただし、完全精度を必要としない場合は、GetForegroundWindow()
を1秒に1回呼び出して、返されたHWND
の数値が変更されているかどうかを確認する方がずっと簡単です。半分の秒間隔を気にする必要のないアクティビティトラッカーアプリのようなものでは、このテクニックはより良い選択です。
ヒント:何があるかどう
GetForegroundWindow()
は(あなたがいることをフィルタリングする必要があるかもしれないので、デスクトップやタスクバーまたは浮動ウィジェットすることができます)現在フォーカスがあるウィンドウのハンドル、またはゼロのハンドルを返しません現在フォーカスされているウィンドウ。- 超高速ですので、1秒に数十回または数百回呼び出すことに害はありません。
- ウィンドウハンドルの値は、(現在のユーザーセッションでは)一意であり、異なるアプリケーションに属していても異なります。また、破棄されたハンドルがほとんど直ちに再割り当てされないように割り当てられます。
0
自分のアプリケーションが心配な場合は、Activate/Focus/LostFocus/DeActivateイベントを処理できます。すべてのウィンドウを監視する必要がある場合は、Windowsフックを使用する必要があります。一つの記事here。
関連する問題
- 1. TIBCO BusinessWorks 6のリクエスト時間を追跡する方法
- 2. ウェブアプリケーションのイベント時間を追跡する
- 3. Game of Life:アクティブなセルを追跡する方法
- 4. nginx-sflow-moduleによる応答時間の追跡方法
- 5. Java GUIアプリケーションで使用される時間を追跡する方法は?
- 6. Googleスプレッドシートの追跡時間
- 7. アクティブなコールステータスを追跡する - Twilio
- 8. sitecore分析でユーザーの訪問時間を追跡する方法
- 9. vs 2010でのデバッグにかかった時間を追跡する方法は?
- 10. フラグメント間でイベントハンドラのインスタンスを追跡する方法
- 11. 追跡の方法1ページのウェブサイトの訪問時間
- 12. PHP関数/コードの追跡方法処理時間
- 13. 追跡する方法EXC_BAD_ACESS
- 14. スウィフトで経過時間を追跡する
- 15. value_historyモデルでポートフォリオ価値を時間通りに追跡する
- 16. 角2ページでユーザーの経過時間を追跡する
- 17. リアルタイムカウンタで経過時間を追跡する
- 18. ランチャーオーケストレーションツールでイベントを追跡する方法
- 19. VB6でイベントを追跡する方法
- 20. NashornでReferenceErrorを追跡する方法
- 21. touchesBeganとtouchesEnded:の間で一貫性のある方法でタッチを追跡する方法
- 22. Androidでフォアグラウンドでアクティビティがアクティブである期間を取得する方法
- 23. Harvest API-PHP-特定の時間枠の合計時間を追跡する
- 24. サイトの応答時間の追跡
- 25. コンポーネント間のノックアウトポストボックス - サブスクライバがアクティブであることを確認する方法
- 26. Androidでフォアグラウンドアプリケーションを取得する方法。通知の除外
- 27. addref()とrelease()を追跡するコンパイル時間オプション?
- 28. どのように時間を追跡するためのアイデア?
- 29. 作業日/時間を追跡するタイムシートプログラム?
- 30. 電話の通話時間を追跡する