4

我有一个在服务器上运行的 Delphi 应用程序。这个应用程序对我的数据库进行了一些关键的工作,这些工作在其他应用程序中使用并在用户登录到 Windows 时执行。一切正常,但是,服务器的管理员有时会重新启动服务器并且没有登录到 Windows。服务器停留在 Windows 登录中,我的应用程序没有启动。

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

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

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

4

2 回答 2

15

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

于 2012-08-14T21:59:18.990 回答
1

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

我使用 SVCOM 创建了带有托盘图标和可以最小化到系统托盘的表单的漂亮服务。

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

希望这可以帮助

于 2012-08-15T06:40:06.137 回答