WINAPI процессы и потоки
Задание:
Создает процесс (CreateProcess), запускающий стандартный Калькулятор (calc.exe) и, в случае успеха, выводит id созданного процесса. Далее для пользователя на экран выводится меню возможных действий: если пользователь нажимает клавишу “s” поток созданного процесса приостанавливается (SuspendThread), если нажимает “r” – поток возобновляет выполнение (ResumeThread), если нажимает “t” – созданный процесс завершает свою работу (TerminateProcess). После приостановки потока убедитесь, что работа с калькулятором невозможна до тех пор, пока пользователь не возобновит выполнение. После завершения процесса не забудьте закрыть дескриптор.
#include <string.h>
#include <windows.h>
#include <locale.h>
int main()
{
setlocale(LC_ALL,"Rus");
STARTUPINFO cif;
ZeroMemory(&cif,sizeof(STARTUPINFO));
cif.cb = sizeof(STARTUPINFO);
PROCESS_INFORMATION pi;
printf("\t\t ПЕРВЫЙ ПУНКТ\n");
if (!CreateProcess("C:\\Windows\\System32\\calc.exe",NULL,NULL,NULL,FALSE,0,NULL,NULL,&cif,&pi))
{
printf("Ошибка создания процесса");
return 1;
}
printf("process calc.exe\n");
printf("processId %d \n", pi.dwProcessId);
printf("\t 's' - приостанавливает поток\n");
printf("\t 'r' - возобновляет поток\n");
printf("\t 't' - процесс завершает свою работу\n");
printf("Ваш выбор : \n");
while(1)
{
char k = getchar();
if (k == 's')
{
if (SuspendThread(pi.hThread))
printf("\t поток приостановлен\n");
else
printf("\t ошибка приостановления потока\n");
}
else if (k == 'r')
{
if (ResumeThread(pi.hThread))
printf("\t поток возобновлен\n");
else
printf("\t ошибка возобновления потока\n");
}
else if (k == 't')
{
TerminateProcess(Thread,NO_ERROR);
printf("Поток завершил свою работу\n");
break;
}
}
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}
Не работает нужным образом . Что исправить или что почитать для понимания всего этого ?