我正在开发一个时间跟踪应用程序,它监视窗口更改和用户空闲。 我的问题是:哪一个在性能方面花费更多,浪费系统资源:
使用SetWinEventHook(EVENT_SYSTEM_FOREGROUND),
或设置Timer.Tick并检查活动窗口标题是否一直更改user32.dll GetForegroundWindow()和GetWindowText()?
为了测试用户空闲,我已经发现使用低级鼠标和键盘钩子比使用Timer调用GetLastInputInfo()更昂贵。 (或者我做错了什么?) 我将这些来源用于键盘和鼠标钩:https://blogs.msdn.microsoft.com/toub/2006/05/03/low-level-keyboard-hook-in-c/ 并为窗口更改钩子: Detect active window changed using C# without polling
谢谢!