Как получить объекты GDI, связанные с процессом

Я изучаю проблему утечки GDI в одном из наших приложений smart-client. Я ищу инструмент (например, tasklist), чтобы получить объекты GDI, связанные с процессом. Я вижу объекты GDI в taskmanager, но мое требование периодически его записывать. Например, в текстовом файле.

Ответ 1

Должно быть довольно просто написать программу для периодического журнала количества обработчиков GDI, используемых в процессе, с помощью функции API GetGuiResources.

Ответ 2

Полностью бесплатный Process Explorer (http://www.sysinternals.com) позволяет вам графически проверить этот и множество других аспектов, связанных с запущенными процессами. Добавьте GDI Objects к отображаемым столбцам, и все готово. Столбец GDI Objects находится на вкладке Process Memory в диалоговом окне Select Columns.

ПРИМЕЧАНИЕ: Microsoft приобрела их инструменты, и я думаю, что Марк Руссинович теперь работает на Microsoft. Инструменты Sysinternals, как правило, не требуют какой-либо установки, кроме как скопировать их в удобное для вас место, и они должны быть в вашем наборе инструментов, если они еще не установлены.

Ответ 3

Используйте GDIView, бесплатный инструмент от NirSoft.

Их описание:

GDIView - уникальный инструмент, который отображает список дескрипторов GDI (кистей, ручек, шрифтов, растровых изображений и т.д.), открытых каждым процессом. Он отображает общий счетчик для каждого типа дескриптора GDI, а также подробную информацию о каждом дескрипторе. Этот инструмент может быть полезен разработчикам, которые должны отслеживать утечку ресурсов GDI в своем программном обеспечении.

Вы можете сохранить список счетчиков GDI в виде обычных, разделенных табуляцией, разделенных запятыми и табличных текстовых файлов, а также горизонтального или вертикального HTML файла или XML файла.