Delphi Windows服务&x2B;在系统托盘中运行应用程序

Delphi Windows服务&x2B;在系统托盘中运行应用程序,delphi,windows-services,delphi-2010,system-tray,Delphi,Windows Services,Delphi 2010,System Tray,我有一个在服务器上运行的Delphi应用程序。此应用程序使用my DB执行一些关键工作,my DB在其他应用程序中使用,并在用户登录到Windows时执行。一切正常,但服务器管理员有时会重新启动服务器,而不登录Windows。服务器停留在Windows登录中,我的应用程序不会启动 经过一个小的研究,我决定创建一个Windows服务,甚至在用户登录Windows之前就启动我的应用程序。但是,我有两种形式。一个表单显示应用程序正在执行的当前进程,另一个表单编辑用于配置第一个表单的.ini文件 我需要

我有一个在服务器上运行的Delphi应用程序。此应用程序使用my DB执行一些关键工作,my DB在其他应用程序中使用,并在用户登录到Windows时执行。一切正常,但服务器管理员有时会重新启动服务器,而不登录Windows。服务器停留在Windows登录中,我的应用程序不会启动

经过一个小的研究,我决定创建一个Windows服务,甚至在用户登录Windows之前就启动我的应用程序。但是,我有两种形式。一个表单显示应用程序正在执行的当前进程,另一个表单编辑用于配置第一个表单的.ini文件

我需要做的是创建一个服务,在用户登录Windows之前和登录之后启动我的应用程序,显示我的表单或打开表单,但将其最小化到系统托盘


是否可以将Windows服务与此行为一起使用,并将我的表单最小化到系统托盘?

在Vista以后的版本中,服务根本无法显示UI(包括系统托盘图标),早期版本不鼓励使用此服务。在所有版本的Windows中,您都应该将UI分离为其自己的非服务应用程序,该应用程序可由登录用户运行,管理该用户托盘的系统托盘图标,并根据需要使用任意数量的可用IPC机制(管道、套接字、COM、RPC、WCF等)与后端服务通信,您可以在服务中使用表单,但is必须以管理员身份运行,并且必须设置为交互式服务

我使用SVCOM创建了漂亮的服务,其中包含托盘图标和一个可以最小化系统托盘的表单

请看这里:


希望这对您有所帮助

最后,您将从数据库工作中分离gui,并按照中的一个建议进行交互。好建议!有关此主题的更多信息,请参阅Windows服务常见问题解答。我已经知道我不能将UI用于服务,我只是想确认一下。我正在将我的应用程序拆分为两个应用程序。一个作为服务,另一个作为带有表单的简单配置程序。在用户登录Windows之前,服务是否启动了任何特定配置?感谢您的回答,这将对我帮助很大。假设您使用的是Delphi的
TService
类,那么它的
StartType
属性将控制服务启动的时间。默认设置为
stato
,这意味着服务将在操作系统启动时自动启动。我解决了这个问题。有一个服务在后台完成这项艰巨的工作,还有一个简单的可视化应用程序来配置服务中使用的文件。感谢大家的帮助。SvCom看起来是一个方便的工具,但从技术上讲,它不能在windows服务应用程序中使用表单。它仍然生成两个独立的应用程序并将它们集成在一起。你可以调整你的答案,提到像这样的工具可以帮助建立这样的联系,而不是说一些事实上不可能的事情(使用新技术)。