gpt4 book ai didi

Delphi - 优雅地关闭服务中创建的进程。 (使用 tprocess/createProcess)

转载 作者:行者123 更新时间:2023-12-01 19:13:23 30 4
gpt4 key购买 nike

我有一个用 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 过程启动的程序。

你会怎么做?

最佳答案

我会使用 JVCLTJvCreateProcess 组件它以优雅的方式包装了 win32 的任何与进程相关的功能。这个答案来自 Dont-touch-winapi-unless-really-required 部门:-)

关于Delphi - 优雅地关闭服务中创建的进程。 (使用 tprocess/createProcess),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/268208/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com