当前位置:  开发笔记 > 开发工具 > 正文

如何枚举另一个用户会话的打开窗口(~EnumWindows)

如何解决《如何枚举另一个用户会话的打开窗口(~EnumWindows)》经验,为你挑选了2个好方法。

我有一个应用程序,可以列出当前会话打开的窗口.它使用user32.dll中的EnumWindows方法.

我想从Windows服务运行此代码,但由于该服务未附加到用户会话,因此它显然不返回任何内容.

所以问题是,我如何枚举另一个用户会话的打开窗口(例如,使用特定的登录用户)?

与EnumWindows类似,我也想获得用户会话的前台窗口(比如GetForegroundWindow适用于当前用户).



1> DavidK..:

据我所知,你不能从另一个会话的窗口访问.值得注意的是,实际上没有"当前会话" - 可能有多个用户通过终端服务登录,或XP的快速用户切换.

一种方法是向每个用户的配置文件添加一个程序,而没有只与您的服务通信的UI.但是,您仍然需要应对可能存在多个活动会话的事实.



2> csgero..:

根据此文档,您可以使用CreateProcessAsUser在其他用户的登录会话中创建一个进程,并可以枚举那里的窗口.您仍然需要一些IPC机制来与服务进行通信.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有