我正在开发一个用于观察其他应用程序的应用程序(包括其他用户会话的应用程序) 我的应用程序应收集有关每个应用程序的CPU负载,内存使用情况和主窗口状态(如果存在)的信息。 现在我试图获取其他应用程序的窗口状态。如果它的窗口在同一个会话中(就像我的应用程序那样)那么一切都很好。
而且......我在另一个会话中获取有关Windows的信息时遇到问题。我已经阅读了这个老话题:How can I enumerate the open windows (~EnumWindows) of another user session我理解我应该在每个会话中启动新进程,以便在此会话的桌面中枚举窗口。
但也许在Windows Server 2012中出现了针对此问题的新解决方案(一些新的API函数或在另一个会话中与dwm.exe的某些交互等)? 如果需要某些管理权限(和/或组策略),则不是问题
谢谢
PS。现在我使用Process.MainWindowHandle属性(可能使用GetWindowThreadProcessId函数)。 我也尝试使用OpenWindowStation(" \ Sessions \ 1 \ Windows \ WindowStations \ WinSta0")返回错误161(无效路径)
答案 0 :(得分:1)
您需要在要查看其窗口的桌面上执行代码。