【发布时间】:2012-12-12 10:24:02
【问题描述】:
我们有一个需要从服务运行的第三方遗留软件,我们希望使用窗口消息来自动化它,以单击按钮、抑制消息框等。
问题是我似乎无法在表单处于活动状态时启动进程,我可以使用 Process.GetProcessesByName("ProcessName"); 检索进程,但 MainWindowHandle 和 MainWindowTitle 为空。
有没有办法从服务启动 Windows 客户端程序以便正确创建表单?
【问题讨论】:
-
Windows 服务在没有桌面的用户上下文中运行。这就是为什么您不能从服务中使用窗口的原因。请尝试将服务使用的用户更改为您希望打开窗口的用户。
-
我不想向真实用户展示表单,我想以编程方式与表单交互,换句话说,我想让旧的遗留软件作为服务工作,以便我们的后端可以交谈使用 MQ 或 WCF 等现代技术
-
好吧,我认为这行不通 - 正如我所说的,Windows 服务默认情况下不托管桌面,因此您无法创建 Windows。 ://
-
好的,但是像 AutoMate 这样的商业工具是如何做到的呢?他们可以在没有用户登录的情况下调用表单并与之交互。networkautomation.com
-
我想知道是否可以从服务中登录用户?这样我就可以登录用户并从该帐户运行程序。
标签: c# winapi windows-services