gpt4 book ai didi

delphi - 启动进程并监听退出事件

转载 作者:行者123 更新时间:2023-12-03 15:08:01 28 4
gpt4 key购买 nike

我有一些代码启动一个进程并连接一个事件处理程序来处理进程退出时的情况,我的代码是用 C# 编写的,我想知道 Delphi 是否可以实现类似的功能。

System.Diagnostics.Process myProcess = new System.Diagnostics.Process();
myProcess.StartInfo.FileName = "notepad.exe";
myProcess.EnableRaisingEvents = true;
myProcess.Exited += new System.EventHandler(Process_OnExit);
myProcess.Start();

public void Process_OnExit(object sender, EventArgs e)
{
//Do something when the process ends
}

我对 Delphi 不太了解,所以任何帮助将不胜感激,谢谢。

最佳答案

是的,您可以使用 Delphi 做类似的事情。我还没有见过使用事件处理程序,但您可以创建一个进程,等待它完成,然后在发生这种情况时执行某些操作。如果您想同时做某事,请将其放在另一个线程中。

这是一些用于创建进程并等待我从网上抓取的代码:

procedure ExecNewProcess(const ProgramName : String; Wait: Boolean);
var
StartInfo : TStartupInfo;
ProcInfo : TProcessInformation;
CreateOK : Boolean;
begin
{ fill with known state }
FillChar(StartInfo, SizeOf(TStartupInfo), 0);
FillChar(ProcInfo, SizeOf(TProcessInformation), 0);
StartInfo.cb := SizeOf(TStartupInfo);
CreateOK := CreateProcess(nil, PChar(ProgramName), nil, nil, False,
CREATE_NEW_PROCESS_GROUP or NORMAL_PRIORITY_CLASS,
nil, nil, StartInfo, ProcInfo);
{ check to see if successful }
if CreateOK then
begin
//Note: This will wait forever if the process never ends!
// You are better off using a loop with a timeout, or WaitForMultipleObject
if Wait then
WaitForSingleObject(ProcInfo.hProcess, INFINITE);
end
else
begin
RaiseLastOSError;
//SysErrorMessage(GetLastError());
end;

CloseHandle(ProcInfo.hProcess);
CloseHandle(ProcInfo.hThread);
end;

关于delphi - 启动进程并监听退出事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2008553/

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