如何从Windows服务获取前台窗口?

时间:2012-11-05 23:34:55

标签: windows service

我正在使用像Get active window text (and send more text to it)这样的代码将密钥发送到前台窗口。当我从控制台运行它时,效果很好。当我从我的服务运行它时,GetForegroundWindow()调用返回0(零)。如何从我的服务获取前台窗口句柄?

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

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

1 个答案:

答案 0 :(得分:1)

如果你设置

,XP GetForegroundWindow就可以了
  

允许服务与桌面交互

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

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

我不知道你为什么要从windows服务这样做,但也许隐藏在托盘中的简单桌面应用程序就可以了。