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

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

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

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

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

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

最佳答案

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

关于delphi - Windows 服务 + 在系统托盘中运行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11960432/

相关文章:

Powershell - 使用参数启动 Windows 服务

Delphi:防止方法名称出现在可执行文件中

Delphi 2010 宽函数与字符串函数

delphi - 向 CreateThread 传递参数

delphi - 如何在我的 Delphi 应用程序中包含音频可视化?

delphi - 更改放大镜玻璃的高度和宽度

delphi - 如何将 TImageList 中的图片分配给 TImage?

c# - 超时已过且服务管理器中的操作尚未完成

unit-testing - 使用 Bold for Delphi 框架进行编码时提高可测试性

java - 制作一个交互式Windows服务