Delphi 启动一个进程并获取其pid

Delphi 启动一个进程并获取其pid,delphi,delphi-xe,Delphi,Delphi Xe,使用delphi XE,我尝试使用不同的参数多次执行exe文件 但由于各种原因,我需要分别关闭/重新启动每一个 所以我想如果我启动example.exe并得到它的pid 我将能够在以后使用该唯一pid值杀死它 看看如果我只是执行example.exe,然后尝试使用进程名或进程文件路径获取该进程的PID,结果会是错误的,因为有4个进程使用该名称 有什么建议或想法吗? 我的问题可能与其他一些问题类似,但我需要返回pid值,因此请记住查看如何使用CreateProcess。StackOverflow有

使用delphi XE,我尝试使用不同的参数多次执行exe文件 但由于各种原因,我需要分别关闭/重新启动每一个

所以我想如果我启动example.exe并得到它的pid
我将能够在以后使用该唯一pid值杀死它

看看如果我只是执行example.exe,然后尝试使用进程名或进程文件路径获取该进程的PID,结果会是错误的,因为有4个进程使用该名称

有什么建议或想法吗?
我的问题可能与其他一些问题类似,但我需要返回pid值,因此请记住

查看如何使用CreateProcess。StackOverflow有多个示例,包括:


如果调用成功,您将在传递到CreateProcess的TProcessInformation参数中拥有该进程的句柄。

使用CreateProcess进行查看。StackOverflow有多个示例,包括:

如果调用成功,您将在传递到CreateProcess的TProcessInformation参数中拥有进程句柄。

使用Win32 API函数。它输出一个包含已启动进程及其主线程的ID和句柄的结构。您可以使用进程句柄等待进程退出

要终止进程,可以将进程句柄传递给

或者,你可以更加文明,并且:

  • 使用或枚举进程的UI窗口,向每个窗口发布消息
和/或:

  • 将消息发布到主线程
如果这不起作用,那么使用
TerminateProcess()
作为最后手段。

使用Win32 API函数。它输出一个包含已启动进程及其主线程的ID和句柄的结构。您可以使用进程句柄等待进程退出

要终止进程,可以将进程句柄传递给

或者,你可以更加文明,并且:

  • 使用或枚举进程的UI窗口,向每个窗口发布消息
和/或:

  • 将消息发布到主线程

如果这不起作用,那么使用
TerminateProcess()
作为最后手段。

假设您使用CreateProcess启动EXE,您只需保留进程的句柄,这比查找PID更可靠。假设您使用CreateProcess启动EXE,您只需保留进程的句柄,这将比查找PID更可靠。如果仍然需要PID,请在句柄上使用GetProcessId。
GetProcessId
将是多余的。记住PID而不是手柄
CreateProcess
会产生该结果。@SertacAkyuz这不是必需的,
CreateProcess()
还会返回已启动进程的PID(以及进程主线程的ID和句柄)。请参阅结构。如果仍然需要PId,请在句柄上使用GetProcessId。
GetProcessId
将是多余的。记住PID而不是手柄
CreateProcess
会产生该结果。@SertacAkyuz这不是必需的,
CreateProcess()
还会返回已启动进程的PID(以及进程主线程的ID和句柄)。请看结构。