我有一个应用程序,用户可以以两种不同的方式启动,作为普通应用程序或作为 Windows 服务。当服务已经运行时(系统托盘中有一个图标)并且用户尝试启动应用程序(不仅仅是通过单击托盘图标打开,而是再次单击开始>应用程序>等等),它说:“应用程序已经作为服务运行,您要关闭服务并启动应用程序吗? ” 当用户单击“是”时,应用程序将关闭服务并作为普通应用程序启动自身。
发生这种情况时,我放置了一个标志,表明用户曾经停止过服务,并且当他们关闭应用程序时,软件会看到该标志并且服务必须重新开始运行,因为它在作为普通应用程序启动之前已关闭。
我试着说:
WinExec(PChar('NET START MyApplicationName'),SW_shownormal);
在OnClose
事件中,在此行之前:
ExitProcess(0);
但它说该服务已经在运行并关闭应用程序而不启动该服务,如果我把它放在该行之后,它根本不会做任何事情。
有没有办法做到这一点?
当我在它之前放置该行时,ExitProcess(0);
它会打开一个带有以下消息的 cmd 窗口:
“服务没有响应控制功能”
然后它关闭应用程序,关闭 cmd 窗口并且它不启动服务。