启动一个进程并获取它的pid

start a process and obtain its pid

使用 delphi XE 我试图用不同的参数多次执行一个 exe 文件 但出于各种原因,我将需要 close/restart 每一个分开。

所以我想如果我开始 example.exe 并获取它的 pid
稍后我将能够使用该唯一的 pid 值将其杀死。

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

有什么建议或想法吗? 我的问题可能看起来与其他问题相似,但我需要 return pid 值,所以请记住这一点

考虑使用 CreateProcess。 Whosebug 上有多个示例,包括:Hide process window with 'CreateProcess'

如果调用成功,您将在传递给 CreateProcess 的 TProcessInformation 参数中获得进程的句柄。

使用包含已启动进程及其主线程的 ID 和句柄的 Win32 API CreateProcess() function. It outputs a PROCESS_INFORMATION 结构。可以使用进程句柄等待进程退出

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

或者,您可以更文明一些并且:

And/Or:

  • post 向主线程发送 WM_QUIT 消息。

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