Показать сообщение отдельно
  #1  
Старый 11.04.2011, 01:10
Homez Homez вне форума
Прохожий
 
Регистрация: 10.03.2011
Сообщения: 20
Репутация: 10
По умолчанию "Чистое" изображение чужой формы

Здравствуйте, уважаемые форумчане!

(Это дополнение к моему недавнему вопросу в этом разделе форума)

Мне нужно получить снимок с окна другой программы, чтобы потом обрабатывать это изображение в своей. Я делал как: получал контекст устройства (DC) чужой формы, в своей программе создавал объект TBitmap, затем с помощью функции BitBlt копировал в свой TBitmap изображение с контекста этой чужой формы. Но проблема в том, что если чужая форма перекрыта окнами других приложений, изображение получается "грязное", то есть в нем я получаю также снимки перекрывающих форм. Мне этого не надо.

Знаю, что в классе TForm есть метод GetFormImage, а так же метод PainTo. Вопрос такой: можно ли создать объект TForm, привязанный к любому произвольно выбранному окну и его инкапсулирующий, с тем, чтобы я мог использовать один из вышеуказанных методов для получения "чистого" снимка формы? Если да, то как это делается?

P.S. Я заглядывал в исходник PaintTo. Можно было бы в лоб использовать последовательность вызовов Win32 API из него, но мне хочется как-то по простому, хотя вроде, как написано там, так и несложно. В любом случае, привязка TForm к произвольной форме могла бы пригодиться в дальнейшем и для других задач.

С уважением, Дмитрий Новиков
Ответить с цитированием