Как GetGuiResources для всех системных процессов? - PullRequest
0 голосов
/ 22 марта 2010

Мне нужно измерить все используемые объекты GDI в системе Windows XP. Я нашел метод GetGuiResources (__ в HANDLE hProcess, __in DWORD uiFlags) (с флагом GR_GDIOBJECTS). Я вызываю его для процесса, который я получаю из метода GetCurrentProcess (), определенного в WinBase.h.

Я не знаю, как вызвать его для других системных процессов, которые я получаю с помощью System :: Diagnostics :: Process :: GetProcesses (), потому что эта функция возвращает массив указателей процессов, а GetGuiResources принимает HANDLE.

Кто-нибудь знает решение для этого? Как преобразовать указатель процесса в дескриптор или получить РУЧКИ для всех запущенных системных процессов?

спасибо за помощь заранее!

1 Ответ

1 голос
/ 22 марта 2010

Используя свойство Id каждого объекта Process массива, возвращаемого GetProcesses (), вы можете получить идентификатор каждого процесса. Затем из идентификатора вы можете получить дескриптор через OpenProcess API. Не забудьте закрыть ручку с помощью CloseHandle , когда она вам больше не нужна.

Обратите внимание, что вы не можете использовать свойство Handle объектов Process, поскольку оно работает только для объектов, возвращаемых Process.Start.

Кстати, имейте в виду, что для новых проектов вы должны использовать новый язык C ++ / CLI вместо старых расширений Managed C ++.

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