启动一个进程并获取它的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()
。
或者,您可以更文明一些并且:
- 使用
EnumWindows()
or EnumThreadWindows()
, posting a WM_CLOSE
消息枚举进程的 UI windows。
And/Or:
- post 向主线程发送
WM_QUIT
消息。
如果这不起作用,则使用 TerminateProcess()
作为最后的手段。
使用 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()
。
或者,您可以更文明一些并且:
- 使用
EnumWindows()
orEnumThreadWindows()
, posting aWM_CLOSE
消息枚举进程的 UI windows。
And/Or:
- post 向主线程发送
WM_QUIT
消息。
如果这不起作用,则使用 TerminateProcess()
作为最后的手段。