Win32中是否存在_NET_WM_USER_TIME
属性的模拟或以其他方式获取按上次使用时间排序的窗口列表?
答案 0 :(得分: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进行比较,并存储一段时间内的日志和焦点状态。这样,您就可以随时查询自己的日志,而无需额外的开销。
我曾经在.NET .NET之前从Visual Basic做过很多相同的事情,但是在任何其他可以访问Win32 API的环境中也应该完全相同。