【发布时间】:2011-10-06 12:09:43
【问题描述】:
我想自动化一个仅作为 GUI 应用程序提供的 Windows 应用程序(不支持命令行)。使用AutoIt,自动化本身相对简单。
但是,我想知道,是否可以从 Windows 服务启动 Windows 应用程序(这将简单地调用 AutoIt 脚本)?
【问题讨论】:
标签: user-interface windows-services automation autoit
我想自动化一个仅作为 GUI 应用程序提供的 Windows 应用程序(不支持命令行)。使用AutoIt,自动化本身相对简单。
但是,我想知道,是否可以从 Windows 服务启动 Windows 应用程序(这将简单地调用 AutoIt 脚本)?
【问题讨论】:
标签: user-interface windows-services automation autoit
即使 Auto-it 可以与 UAC 一起使用,您也很可能会遇到会话隔离问题 - 即服务和桌面不会混合并相互发送消息,除非明确编码通过它。
所以这是可能的,但也不是小菜一碟。
你可能想看看:Launching a .Net winforms application interactively from a service
【讨论】:
虽然由于在最新版本的 Windows 中与 Session 0 隔离相关的复杂性,根本不建议这样做,但 AutoIt 脚本当然可以从 Windows 服务调用。请参阅this page for a few sample scripts that work as expected when called from a Windows Service。
不幸的是,并非所有 AutoIt 功能似乎都可以在 Session 0 中工作。我们遇到了“Win*”例程(WinActivate、WinExists)的问题,因此您应该尽可能避免使用这些例程。而且由于文档没有突出显示有问题的功能,因此请务必彻底测试!
【讨论】: