我使用GetForegroundWindow()函数在桌面上找到了前景窗口。我需要跟踪每个应用程序在前台花费多少时间,并在每次恢复到前台时在数据库中更新它。 是否有用于设置计数器的API或在窗口未对焦时查找?
答案 0 :(得分:1)
WH_CBT
支持SetWindowsHookEx
挂钩类型,每次用户切换到另一个窗口或应用程序时都会触发。 How to install Windows hooks from C#
但是,如果您不需要完美的准确度,则每秒只调用GetForegroundWindow()
一次并检查返回的HWND
的数值是否已更改会更容易。对于像活动跟踪器应用程序这样的东西,它不需要注意半秒间隔,这种技术是更好的选择。
提示:
GetForegroundWindow()
返回当前处于焦点的窗口的句柄(可以是桌面或任务栏或浮动窗口小部件,因此您可能需要对其进行过滤),如果当前没有窗口关注,则返回零句柄。 答案 1 :(得分:0)
如果您担心自己的应用程序,可以处理Activate / Focus / LostFocus / DeActivate事件。如果需要监视所有窗口,则需要使用Windows Hooks。一篇文章here。