#include <iostream>
#include <windows.h>
#include <string>
#include <locale>
int main() {
std::wcout.imbue(std::locale("rus_rus.866"));
std::wcin.imbue(std::locale("rus_rus.866"));
std::wcout << L"Управление процессами в Windows" << std::endl;
std::wcout << std::endl;
// ========================================================
// ПОДГОТОВКА СТРУКТУР ДЛЯ CreateProcess
// ========================================================
STARTUPINFO si;
ZeroMemory(&si, sizeof(si));
si.sb = sizeof(si);
PROCESS_INFORMATION pi;
ZeroMemory(&pi, sizeof(pi));
// ========================================================
// СОЗДАНИЕ ДОЧЕРНЕГО ПРОЦЕССА
// ========================================================
std::wcout << L"Ожидаем завершения процесса (таймаут 30 секунд)..." << std::endl;
std::wcout << L"Закройте блокнот вручную или дождитесь таймаута." << std::endl;
std::wcout << std::endl;
wchar_t commandLine[] = L"notepad.exe";
if(CreateProcess(NULL, commandLine, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi)){
printf(pi.dwProcessId);
}
else{
printf("error", GetLastError());
return 1;
}
// ========================================================
// ОЖИДАНИЕ ЗАВЕРШЕНИЯ И ПОЛУЧЕНИЕ КОДА ВЫХОДА
// ========================================================
if(WaitForSignalObject(pi.hProcess, 30000) == 0){
}
return 0;
}