ユーザーが通常のアプリケーションまたはWindowsサービスとして2つの異なる方法で起動できるアプリケーションがあります。サービスがすでに実行されていて(システムトレイにそのアイコンがあります)、ユーザーがアプリケーションを開始しようとすると(トレイアイコンをクリックして開くだけでなく、[スタート]>[アプリケーション]>[何とか]をクリックして再開します)、 「アプリケーションはすでにサービスとして実行されています。サービスを閉じてアプリを起動しますか?」ユーザーが[はい]をクリックすると、アプリケーションはサービスを閉じて通常のアプリケーションとして起動します。
その場合、ユーザーがサービスを一度停止したことを示すフラグを設定し、アプリケーションを閉じると、ソフトウェアにフラグが表示され、通常のアプリとして開始する前に閉じられたため、サービスの実行を再開する必要があります。
私は入れようとしました:
WinExec(PChar('NET START MyApplicationName'),SW_shownormal);
OnClose
イベントでは、この行の前に:
ExitProcess(0);
しかし、サービスはすでに実行されており、サービスを開始せずにアプリケーションを閉じていると表示されます。その行の後に置くと、何も実行されません。
これを行う方法はありますか?
その前に行を置くExitProcess(0);
と、次のメッセージを含むcmdウィンドウが開きます。
「サービスが制御機能に応答していません」
次に、アプリケーションを閉じ、cmdウィンドウを閉じますが、サービスは開始されません。