我使用CreateProcess(在这种情况下为calc.exe)打开了一个进程。
我将参数传递给createProcess:
L"<path to calc>",
NULL,
NULL,
NULL,
false,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&<startupInfo struct memset to 0>
&<procInfo struct memset to 0>
我希望能够杀死进程,在该进程中打开线程等等。我知道这样做的调用,但它们需要句柄,我没有。
是否有办法在生成子进程时自动打开子进程的句柄或其他内容?
我在想CreateIrocess中处理'参数',但这看起来不太合适。
答案 0 :(得分:3)
您传递给CreateProcess
的最后一个参数是指向PROCESS_INFORMATION结构的指针(即procInfo
变量)。
从CreateProcess
成功返回后,该结构将填入您需要的HANDLE
。具体来说,它将包含以下内容:
<强> hProcess 强>
新创建进程的句柄。句柄用于指定 在对进程执行操作的所有函数中的进程 对象
<强> hThread 强>
新创建进程的主线程的句柄。该 handle用于指定执行的所有函数中的线程 对线程对象的操作。
<强> dwProcessId 强>
可用于标识流程的值。该值有效 从创建流程到流程的所有句柄 关闭,过程对象被释放;在这一点上, 标识符可以重复使用。
<强> dwThreadId 强>
可用于标识线程的值。该值有效 创建线程的时间,直到线程的所有句柄都是 关闭并释放线程对象;此时,标识符 可以重复使用。
作为MSDN says:
必须使用 CloseHandle 关闭 PROCESS_INFORMATION 中的句柄 当它们不再需要时。