Ternick
@Ternick

Как убить процесс полностью используя С++?

КОД:
struct dataset {
	HANDLE hProcess;
	HANDLE hThread;
};

dataset runProcess(LPCSTR path, string cmdLine, dataset ds) {
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	ZeroMemory(&si, sizeof(STARTUPINFO));
	ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
	si.cb = sizeof(STARTUPINFO);
	if (CreateProcessA(path, (LPSTR)(" " + cmdLine).c_str(), NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi)) {
		ds.hProcess = pi.hProcess;
		ds.hThread = pi.hThread;
		return ds;
	}
	else {
		return ds;
	}
}

int main(){
    dataset ds;
    ds = runProcess("avoid.exe", NULL, ds);
    Sleep(5000);
    TerminateProcess(ds.hProcess, NO_ERROR);
    TerminateThread(ds.hThread, NO_ERROR);
    CloseHandle(ds.hProcess);
    CloseHandle(ds.hThread);
    return 0;
}

Но вот только все равно остаётся один процесс (создаётся их два) .
Как убить два процесса ?
  • Вопрос задан
  • 470 просмотров
Решения вопроса 1
Ternick
@Ternick Автор вопроса
Всё как обычно :) Я решил проблему так:
После создания процесса я получил handle процесса, позже из него получить pid(DWORD) потом DWORD в строку, потом через taskkill /T /F / PID + pid :)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы