@knizymozf
Учусь программированию...

Почему цикл не останавливается?

Суть моей программы узнать активен ли сейчас диспетчер задач, для этого я использую цикл ниже, который перебирает все активные процессы и из этого цикла я ищу 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, что дает этому циклу и дальше работать.
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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