Суть моей программы узнать активен ли сейчас диспетчер задач, для этого я использую цикл ниже, который перебирает все активные процессы и из этого цикла я ищу taskmgr.exe и возвращаю 0.
// Вывод имя процесса
for ( i = 0; i < cProcesses; i++ )
{
if( aProcesses[i] != 0 )
{
TCHAR szProcessName[MAX_PATH];
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION |
PROCESS_VM_READ,
FALSE,
aProcesses[i]);
if (NULL != hProcess)
{
HMODULE hMod;
DWORD cbNeeded2;
if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded2))
{
GetModuleBaseName(hProcess, hMod, szProcessName, sizeof(szProcessName)/sizeof(TCHAR));
}
}
std::string taskmgr = szProcessName;
if (taskmgr == "taskmgr.exe") return 0;
}
}
Он всё же возвращает 0 при диспетчере задач, при его неактивности выводит n-активных процессов.
Я решил создать цикл
while(ActiveProcess() == 0), цикл не должен срабатывать когда диспетчер неактивен, но когда он активен - срабатывает, но когда я завершаю процесс диспетчера задач, цикл не перестает работать.
Я также решил попробовать вывести ActiveProcess() и всегда получал 0, что дает этому циклу и дальше работать.