我使用GetForegroundWindow()函數在桌面上找到了前臺窗口。我需要跟蹤每個應用程序在前臺花費多少時間,並在每次恢復到前臺時將其更新到數據庫中。 是否有一個API來設置計數器或找到窗口不重點?如何跟蹤前臺應用程序處於活動狀態的持續時間
1
A
回答
1
SetWindowsHookEx
支持的鉤子類型有WH_CBT
,每次用戶切換到另一個窗口或應用程序時都會觸發。 How to install Windows hooks from C#。
但是,如果您不需要完美的準確度,那麼每秒鐘撥打GetForegroundWindow()
一次並檢查返回的HWND
的數值是否已更改要容易得多。對於不需要注意半秒間隔的活動跟蹤器應用程序,此技術是更好的選擇。
提示:
GetForegroundWindow()
返回窗口的句柄當前處於焦點(可以是桌面或任務欄或浮動小窗口,所以你可能需要篩選),或零手柄,如果沒有窗口當前集中。- 它速度超快,因此每秒鐘調用數十次或幾百次都沒有什麼壞處。
- 窗口句柄值是唯一的(至少在當前用戶會話中),即使它們屬於不同的應用程序也是不同的,並且它們的分配方式使得銷燬的句柄幾乎不會立即重新分配。
0
如果您關心自己的應用程序,則可以處理激活/焦點/ LostFocus/DeActivate事件。如果您需要監視所有窗口,則需要使用Windows掛鉤。一篇文章here。