不是直截了当,但试试这个:
调用EnumWindowStations()在与调用进程相同的Session中枚举可用的窗口站(如果需要在另一个Session中查询进程,则这将不起作用).
对于每个窗口站,调用EnumDesktops()枚举其桌面.
对于每个桌面,调用EnumDesktopWindows()枚举其顶级窗口.
对于每个窗口,调用GetWindowThreadProcessId()以获取其进程ID并将其与您要查找的ID进行比较.
另一种选择可能是执行以下操作:
调用从目标进程ID OpenProcess()获取a HANDLE.
调用NtQueryInformationProcess()以检索进程PEB结构的地址.
打电话ReadProcessMemory()来阅读PEB.它的ProcessParams.DesktopName字段包含当前与进程关联的工作站/桌面的名称(PEB.ProcessParams当时MSDN显示的字段还有很多).
解析DesktopName以提取窗口站和桌面名称.
根据需要枚举工作站,查找匹配的名称GetUserObjectInformation().
| 归档时间: |
|
| 查看次数: |
2280 次 |
| 最近记录: |