我正在开发一个应用程序来观察其他应用程序(包括另一个用户会话的应用程序) 我的应用程序应该收集有关每个应用程序的 CPU 负载、内存使用和主窗口状态(如果存在)的信息。现在我正在尝试获取其他应用程序的窗口状态。如果它的窗口与我的应用程序在同一个会话中,那么一切正常。
而且...我在另一个会话中获取有关 Windows 的信息时遇到问题。我已经阅读了这个旧主题:如何枚举另一个用户会话的打开窗口(~EnumWindows),并且我知道我应该在每个会话中启动新进程,以便枚举该会话桌面中的窗口。
但也许在 Windows Server 2012 中出现了针对此问题的新解决方案(一些新的 API 函数或在另一个会话中与 dwm.exe 的一些交互等)?如果需要一些管理权限(和/或组策略),这不是问题
谢谢
PS。现在我正在使用 Process.MainWindowHandle 属性(可能使用 GetWindowThreadProcessId 函数)。我还尝试使用 OpenWindowStation("\Sessions\1\Windows\WindowStations\WinSta0") 返回错误 161(路径无效)