我想在某个时候终止批处理和由它衍生的任何进程
对于这个exist Job Objects:
作业对象允许将多组进程作为一个单元进行管理。
要终止当前与作业对象关联的所有进程,请使用TerminateJobObject函数。
代码语言:javascript复制if (HANDLE hJob = CreateJobObjectW(0, 0))
{
WCHAR ApplicationName[MAX_PATH];
if (GetEnvironmentVariableW(L"ComSpec", ApplicationName, RTL_NUMBER_OF(ApplicationName)))
{
PROCESS_INFORMATION pi;
STARTUPINFOW si = { sizeof(si) };
if (CreateProcessW(ApplicationName, L"cmd /c
0, 0, 0, CREATE_SUSPENDED, 0, 0, &si, &pi))
{
if (AssignProcessToJobObject(hJob, pi.hProcess))
{
ResumeThread(pi.hThread);
}
else
{
TerminateProcess(pi.hProcess, 0);
}
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
}
}
// .. wait for something ...
TerminateJobObject(hJob, 0);
CloseHandle(hJob);
}但是,可以通过远程com调用(例如StartService)启动新进程-正式地从另一个进程启动。这当然不会在工作中,也不会被终止