多くのプログラムを実行する Delphi で記述された Windows サービスがあります。
サービスを停止する際に、これらのプログラムも閉じたいと思います。サービスが最初に作成されたとき、これはうまくいきましたが、tProcess コンポーネントを更新したと思います。現在、下位プログラムは閉じられていません。
in tProcess - 新しいプロセスを開始するコードは次のとおりです。
if CreateProcess( nil , PChar( FProcess.Command ) , nil , nil , False ,
NORMAL_PRIORITY_CLASS , nil , Directory ,
StartupInfo , ProcessInfo ) then
begin
if FProcess.Wait then
begin
WaitForSingleObject( ProcessInfo.hProcess , Infinite );
GetExitCodeProcess( ProcessInfo.hProcess , ExitCode );
if Assigned( FProcess.FOnFinished ) then
FProcess.FOnFinished( FProcess , ExitCode );
end;
CloseHandle( ProcessInfo.hProcess );
CloseHandle( ProcessInfo.hThread );
end;
これによって呼び出される各実行可能ファイルは、Windows GUI プログラムです (上部に [閉じる] ボタンがあります)。
サービスを停止するときは、createProcess プロシージャを介して起動したプログラムも停止 (強制終了ではなく) したいと考えています。
これをどのように行いますか?