2012-07-20 45 views

回答

0

还有的EnumWindows的调用,其中列出了屏幕上的所有窗口的在任何给定时间:

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497(v=vs.85).aspx

其次,GetActiveWindow会给你的顶层窗口当前活动,并且GetFocus窗口具有输入焦点:

How can I tell if a Window has focus? (Win32 API)

有没有办法从Win32 API的获得对焦历史的名单 - 这是一个信息非常利基位! - 但是你可以在一个后台线程上运行一个进程,该进程定期迭代EnumWindows的结果,将句柄与GetActiveWindow进行比较,并存储窗口和焦点状态随时间变化的日志。这样,你就可以随时询问你自己的日志而无需额外的开销。

我曾经在Visual .NET之前的.NET日子里做过很多相同的事情,但是从任何其他可以到达Win32 API的环境来看,这应该是完全可能的。