在独立EXE和Windows服务之间切换

LaB*_*cca 5 delphi windows-services

我写了一个应用程序,在计时器上通过邮件发送日志.该应用程序具有简约的用户界面,一旦配置文件存在,它就可以在不需要与用户交互的情况下启动.

目前它是一个VCL Forms应用程序,但在某些情况下最好有一个服务(这样在服务器上运行时就不需要打开用户会话来运行应用程序).

你有什么建议同时拥有这两个世界?在一些简单的场景中(小型组织,只有3台,没有IT经理),"非服务"很好,因为它更容易理解和使用,但在更大的组织中,缺乏服务是一个问题.

是否可以同时提供服务和非服务?怎么做到这一点?我不想让部署更复杂,我想到的是一些命令行开关:当使用命令行参数运行时,它可以是一个服务,如果不是一个普通的应用程序......如何做到这一点?).

phi*_*ext 6

好的......最好的方法是在同一个项目中开发"服务"和"非服务"应用程序.就像这里解释的:一个独立的Delphi应用程序,也可以作为Windows服务安装.因此,您可以使用相同的应用程序作为服务或独立应用程序.

如果你想在同一台PC上同时使用它们,那就更复杂了:你必须在独立的应用程序中添加以下功能:

  • 验证服务是否正在运行并处于活动状态.
  • 如果服务正在运行且处于活动状态,则必须与其对话,而不是运行独立进程.