0

我正在使用像这样的代码获取活动窗口文本(并向其发送更多文本)将键发送到前台窗口。当我从控制台运行它时,它工作得很好。当我从我的服务运行它时,GetForegroundWindow() 调用返回 0(零)。如何从我的服务中获取前台窗口句柄?

编辑:一些研究告诉我关于作为不同会话运行的服务 - 如果这与我的问题有关,我需要知道如何获取控制台(物理监视器)会话的前台窗口(如果存在)。

编辑#2:我的用例只涉及 XP。

4

1 回答 1

1

如果您设置,那么在 XP GetForegroundWindow 将起作用

允许服务与桌面交互

服务属性中的复选框(登录选项卡)。这不适用于 Vista 和更新版本。

但是你不应该这样做,事实上你不应该从服务中调用 GetForegroundWindow,即使没有用户登录,服务也会运行,并且当有多个用户登录时它们也可以工作。

我不知道您为什么要从 Windows 服务执行此操作,但也许隐藏在托盘中的简单桌面应用程序可以解决问题。

于 2012-11-06T00:30:50.193 回答