这可能吗?
来自MSDN的文章说:
•服务尝试在会话0中创建用户界面(UI),例如对话框。由于用户未在会话0中运行,因此他或她从未看到UI,因此无法提供输入该服务正在寻找。该服务似乎停止运行,因为它正在等待未发生的用户响应。
这让我觉得有可能拥有一个自动化的用户界面,但是有人告诉我你不能将SendKeys与服务一起使用,因为它在Session 0中被禁用了。
编辑:我实际上并不需要向用户显示GUI
答案 0 :(得分:1)
你可以展示一个;它只是没有出现。
任务栏中有一些关于存在GUI窗口和切换到它的方法的通知。
无论如何,实际上有一个TerminalServices API命令来切换你可以调用的活动会话,如果你真的需要它来显示它。
答案 1 :(得分:0)
您可以编写一个单独的流程,为您的服务流程提供UI。您的UI和服务流程之间的通信可以通过各种方式进行(在Web上搜索“进程间通信”或“IPC”)。
答案 2 :(得分:0)
您的服务可以拥有GUI。只是没有人会看到它。正如MSDN引用所示,服务可以显示一个对话框。对MessageBox
的调用不会失败;它永远不会回来 - 没有人按下按钮。
我不确定你想要“管理GUI”是什么意思。你真的是指假装向控件发送输入,就像使用SendInput
一样吗?我认为没有理由不可能;毕竟,你会将输入注入你自己的程序队列,而SendInput
's Vista-specific warnings没有说明任何事情。但我认为你会让事情变得比他们需要的要复杂得多。重新审视将程序改为根本没有UI的想法。 (这与拥有控制台程序不同。控制台是UI。)