Windows服务+在系统托盘中运行应用程序

时间:2012-08-14 20:43:19

标签: delphi windows-services delphi-2010 system-tray

我在服务器上运行了一个Delphi应用程序。此应用程序对我的数据库执行一些关键工作,该数据库在其他应用程序中使用,并在用户登录Windows时执行。一切正常,但是,事实证明服务器的管理员有时会重新启动服务器并且不会登录到Windows。服务器保持在Windows登录状态,我的应用程序无法启动。

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

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

是否可以使用具有此行为的Windows服务并将表单最小化到系统托盘?

2 个答案:

答案 0 :(得分:15)

在Vista之后,服务根本无法显示UI(包括系统托盘图标),并且在早期版本中不鼓励使用。在所有版本的Windows中,您应该将UI分离为自己的非服务应用程序,该应用程序可以由登录用户运行,管理该用户托盘的系统托盘图标,并根据需要使用后端服务进行通信任意数量的可用IPC机制(管道,套接字,COM,RPC,WCF等)。

答案 1 :(得分:1)

嗯,您可以在服务中拥有表单,但必须以管理员身份运行,并且必须设置为交互式服务。

我已经使用SVCOM创建了很好的服务,托盘图标和表格可以最小化到系统托盘。

看看这里:http://www.aldyn.ru/products/index.html

希望这有帮助