Delphi-使用表单在应用程序内部安装、启动、停止服务

Delphi-使用表单在应用程序内部安装、启动、停止服务,delphi,Delphi,我有Delphi应用程序,我在其中添加了服务,如何通过主窗体按钮安装、启动和停止它 我可以在单独的项目服务中完成,但我的目标是为服务创建接口来控制它 谢谢在同一个应用程序中,您的服务不再具有可视界面 对于Windows Vista及更高版本,服务运行在与用户不同的桌面上,无法与用户进行可视化交互。您需要编写一个单独的应用程序,该应用程序通过命名管道、邮件槽或其他形式的进程间通信,或通过Windows API提供的一种方式与您的服务进行通信。您必须使用Win32 API服务控制函数-CreateS

我有Delphi应用程序,我在其中添加了服务,如何通过主窗体按钮安装、启动和停止它

我可以在单独的项目服务中完成,但我的目标是为服务创建接口来控制它


谢谢

在同一个应用程序中,您的服务不再具有可视界面


对于Windows Vista及更高版本,服务运行在与用户不同的桌面上,无法与用户进行可视化交互。您需要编写一个单独的应用程序,该应用程序通过命名管道、邮件槽或其他形式的进程间通信,或通过Windows API提供的一种方式与您的服务进行通信。

您必须使用Win32 API服务控制函数-
CreateService()
OpenService()
StartService()
ControlService()
等。服务在运行时无法显示自己的UI,UI需要作为单独的进程运行。但是,如果愿意,您可以在同一个可执行文件中承载服务代码和UI代码,使用命令行参数了解何时作为服务运行以及何时作为UI运行。但这更多的是一个代码管理问题。您也可以轻松地将这两个代码基托管在单独的可执行文件中。

我不认为这是问题所在,OP是询问如何从另一个应用程序安装和启动/停止服务。@Jerrydoge第二段讲述了一个包含控制接口的服务,这是不可能的。第二段对我来说没有多大意义,它太宽泛了,这就是我投票结束的原因。“为服务创建接口以控制它”可能意味着很多事情。@Jerry,阅读问题的第一段。这很清楚:“我有Delphi应用程序,我向它添加了服务”。“我有应用程序”和“我为它添加了服务”?我从来没有说过“从服务开始服务”。我说“编写一个单独的应用程序,与您的服务通信……或者使用API中可用的服务控制函数之一”。你看过我贴的链接了吗?雷米提到了与我相同的具体功能。:-)@肯怀特:对不起,当然,当应用程序作为服务启动时,它不应该显示任何形式。但调试起来很不方便。因此,我们的所有服务应用程序都可以在“调试”模式下启动(给定-debug命令行参数),然后显示调试窗体并作为窗体应用程序启动。如果没有它,它们什么也不显示,而是作为一个服务应用程序启动。我会投票决定作为一个副本关闭,但这是一个两个问题(安装服务和启动/停止服务),每个问题都可以通过简单的搜索找到。没有投票,只需回答此问题而无需提问。请澄清您在问题中的真正意思,以避免以下答案评论中出现的混淆。我将此问题理解为“如何从我的窗体应用程序中安装、启动和停止Windows服务应用程序?”是的,我的意思与您在上一次评论中的意思相同,从我的服务托管在同一应用程序(我的应用程序的一部分)中的应用程序窗体启动、停止服务。对不起,我的英语不好。你可以看这张照片来了解我。正如雷米和我都说过的,由于Windows Vista,您不能再从与您的服务相同的应用程序中执行此操作。