2012-02-13 143 views

回答

1

SetWindowsHookEx支持的鉤子類型有WH_CBT,每次用戶切換到另一個窗口或應用程序時都會觸發。 How to install Windows hooks from C#

但是,如果您不需要完美的準確度,那麼每秒鐘撥打GetForegroundWindow()一次並檢查返回的HWND的數值是否已更改要容易得多。對於不需要注意半秒間隔的活動跟蹤器應用程序,此技術是更好的選擇。

提示:

  • GetForegroundWindow()返回窗口的句柄當前處於焦點(可以是桌面或任務欄或浮動小窗口,所以你可能需要篩選),或零手柄,如果沒有窗口當前集中。
  • 它速度超快,因此每秒鐘調用數十次或幾百次都沒有什麼壞處。
  • 窗口句柄值是唯一的(至少在當前用戶會話中),即使它們屬於不同的應用程序也是不同的,並且它們的分配方式使得銷燬的句柄幾乎不會立即重新分配。
0

如果您關心自己的應用程序,則可以處理激活/焦點/ LostFocus/DeActivate事件。如果您需要監視所有窗口,則需要使用Windows掛鉤。一篇文章here