我有一个C++ Win32应用程序被编写为一个Windows GUI项目,现在我试图找出它成为一个服务/ GUI混合。我知道一个Windows服务不能/不应该有一个用户界面。但请允许我解释我到目前为止以及我所拍摄的内容。Windows服务与GUI监视器?
我现在有什么是一个Windows应用程序。运行时,它会在系统托盘中放置一个图标,您可以双击打开该图标。此应用程序的目的是处理夜间计划中指定目录中的文件。 GUI包含以下内容:
- 用于手动启动非预定扫描/处理的按钮。
- 用于打开修改设置的对话框的按钮。
- 列表框用于显示处理线程发送的状态消息。
- 用于显示图像数据的自定义绘制窗口(文件处理包括图像的创建和保存)。
- 状态栏 - 当进程没有运行时,它显示下一个计划扫描的倒计时。在扫描期间,它还提供一些状态反馈,包括进度条。
就是我拍摄的是将在系统启动时运行,而不需要用户登录的服务。这将由计划的文件处理组成。但是,当用户登录时,我仍然希望加载托盘图标,并允许他们打开一个GUI,如上所述监视服务的当前状态,更改设置,手动启动扫描并监视进度扫描。
我敢肯定,我已经看到了这样的应用程序 - 这功能,即使我没有登录服务,但还是给我一个用户界面,一次我登录到工作
我在想,不是让一个多线程应用程序从处理线程向GUI线程发送消息,而是需要两个应用程序 - 一个执行处理的服务和一个GUI应用程序,以提供服务的可视反馈,还有将消息发送到服务(例如,手动启动扫描)。但我是Windows服务新手,不知道如何完成这项工作。
这也可能是我完全脱离基地和服务不是我所期待的。
任何帮助/想法/建议将不胜感激!谢谢。
谢谢你的回应。我从来没有处理IPC,但你的链接看起来会非常有帮助。我会看到我学到的东西。 – 2010-07-01 15:50:55
+1。另请参阅下面的答案,了解如何设置将应用程序转换为服务的一些提示:http://stackoverflow.com/questions/1554047/convert-ac-program-to-a-windows-service/1554405#1554405 – 2010-07-01 15:51:59
您可以通过配对的用户界面和服务(两个独立的实体)来实现。该服务公开COM对象或RPC服务器,并且UI连接到COM对象/ RPC服务器以完成工作。 – 2010-07-02 04:08:10