Можно ли получить дескриптор процесса WINAPI по имени процесса, не повторяя все процессы - PullRequest
0 голосов
/ 03 февраля 2011

Добрый день, возможно ли получить дескриптор процесса WINAPI по его имени, не проходя через все процессы? Я знаю, как обработать процесс WINAPI по его имени, повторяя все процессы:

     HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL);      
     if (Process32First(snapshot, &entry) == TRUE){         
        while (Process32Next(snapshot, &entry) == TRUE)         
        {             
            if (stricmp(entry.szExeFile, ProcessName ) == 0){                   
                HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, entry.th32ProcessID);                  
                // measure process memory usage                
                CloseHandle(hProcess);             
            }         
        }     
      }      
      CloseHandle(snapshot);   

Однако, похоже, потребуется много времени, чтобы перебрать моментальный снимок процесса. Спасибо.

1 Ответ

1 голос
/ 03 февраля 2011

Каждый процесс имеет уникальный идентификатор, но не уникальное имя. Может быть несколько процессов с одним и тем же именем. Таким образом, это невозможно, как невозможно, например, получить запись из std::map по значению без итерации по всему. Однако вы можете написать функцию, которая выдаст вам список идентификаторов по имени, который можно будет многократно использовать, но все же придется повторять. Почему вы беспокоитесь о производительности здесь? Я считаю, что это ничто по сравнению с открытием ручки и измерением памяти процесса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...