Могу ли я удалить объект HBITMAP, созданный в другом процессе? - PullRequest
1 голос
/ 07 декабря 2010

Я создаю служебную программу, которая рисует некоторые (настраиваемые пользователем) значки в других окнах на рабочем столе, используя глобальный хук. Поскольку растровые объекты специфичны для процесса, я создаю отдельные объекты HBITMAP для этих значков в каждом процессе перед тем, как рисовать их, и все эти маркеры хранятся в общем сегменте в dll.

Теперь, когда значок удален в моей программе (пользователем), все объекты HBITMAP для него в этих различных процессах должны быть удалены. Могу ли я сделать это с помощью DeleteObject () в моей основной программе или мне нужно удалить каждый дескриптор в процессе, в котором он был создан?

Ответы [ 3 ]

1 голос
/ 07 декабря 2010

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

1 голос
/ 07 декабря 2010

Дескриптор GDI Объекты обычно являются частным процессом.Вы можете проверить возвращаемое значение DeleteObject в любом случае.

0 голосов
/ 11 декабря 2010

Я просто догадываюсь об этом ...
Вы должны использовать крючок, чтобы зацепить другое окно.

...