我正在使用像Get active window text (and send more text to it)这样的代码将密钥发送到前台窗口。当我从控制台运行它时,效果很好。当我从我的服务运行它时,GetForegroundWindow()调用返回0(零)。如何从我的服务获取前台窗口句柄?
编辑:一个小小的研究告诉我关于作为不同会话运行的服务 - 如果这与我的问题相关,我需要知道如何存在控制台(物理监视器)会话的前台窗口。 编辑#2:我的用例只涉及XP。答案 0 :(得分:1)
如果你设置
,XP GetForegroundWindow就可以了允许服务与桌面交互
服务属性中的复选框(登录选项卡)。这不适用于Vista和更新版本。
但你不应该这样做,事实上你不应该从服务调用GetForegroundWindow,即使没有用户登录也会运行服务,并且当有多个用户登录时它们也可以工作。
我不知道你为什么要从windows服务这样做,但也许隐藏在托盘中的简单桌面应用程序就可以了。