开始一个过程并获得它的pid

时间:2017-05-17 14:40:54

标签: delphi delphi-xe

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

所以我想如果我启动那个example.exe并获得它的pid
我将在以后使用该唯一的pid值杀死它。

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

任何建议或想法? 我的问题可能看起来与其他一些类似,但我需要返回pid值,所以请记住

2 个答案:

答案 0 :(得分:4)

使用Win32 API CreateProcess()功能。它输出一个PROCESS_INFORMATION结构,其中包含已启动进程及其主线程的ID和句柄。您可以使用进程句柄等待进程退出。

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

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

和/或:

  • WM_QUIT消息发布到主线程。

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

答案 1 :(得分:2)

研究使用CreateProcess。 StackOverflow上有多个示例,包括:Hide process window with 'CreateProcess'

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