Главная Новые темы Список тем Задать вопрос Поиск  

Форум "Delphi"


Паскаль, Делфи


 #0 Deep © 15.06.07 16:43:20 - 23.06.07 10:36:52

Грабер битмапов в риалтайме



Вопрос к знатокам WindowsAPI. Имеем хендл окна запущеной программы(чужой), если можно то как с помощью своей программы обойти все подчиненные объекты (окна) и сохранить во внешние файлы всю графику, которая используется в этих объектах. Цитата

 #1 Phoroon © 19.06.07 09:56:33

В теории.

1 Нужно найти окно. Перебираем все компоненты и ищем с нужными классами.
2 Рисунок можно вытащить только с компонента(пример: TImage)
3 Если это рисунок на канве, то делать скриншот по координатам рисунка.
4 Класс TImage можно представить, как окно. Следовательно можно пользоваться чем-то типа GetWindowIcon(щас delphi нет, так что это не точно)
5 Ну а там получил handle bitmap, и можно запихивать в свою переменную. Надо не забыть установить размеры и pixelformat:=pf24, а то может и не сработать(это не иконка).
 #2 Deep © 19.06.07 11:55:09

Найти окно не проблема. Его хендл есть.
А вот как перебирать компоненты в чужом приложении? Там есть только классы окон, и никаких компонент близко не видно. Или я ошибаюсь?

Битмапы же окнами не являются. Правильно?
Но у каждого окна должен быть список битмапов, чтоб окно знало как себя при необходимости прорисовать. Вот этот момент и хочется прояснить.

> 4 Класс TImage можно представить, как окно.
Разве? Не силен в низкоуровневом апи, но это мне кажется заблуждением. Класс TImage - это грубо говоря - битмап. А битмап и окно вещи разные.
 #3 Phoroon © 21.06.07 18:31:01

> Разве? Не силен в низкоуровневом апи, но это мне кажется
> заблуждением. Класс TImage - это грубо говоря - битмап.
> А битмап и окно вещи разные.

Я имел ввиду, то что компонент TImage это отдельный компонент, на котором находится канва.
Соответсвенно можно предположить, что Bitmap на нем, можно вырвать, примерно в стиле как пришлось бы c окном.
 #4 Ketmar © 23.06.07 10:36:52

> Но у каждого окна должен быть список битмапов, чтоб окно
> знало как себя при необходимости прорисовать. Вот этот момент
> и хочется прояснить.

это таки да. только совсем не обязательно их хранить как дочерние окна.

в общем случае задача нерешаема.

в частном -- можно, например, сшотить цельное окно. %-)
или перехватить BitBlt() сотоварищи и тогда уже нагло спереть.




  • Написать ответ

    Имя: Регистрация HTML?
    smiles смайлики
    Потом перейти в:    
    паутина



      ©  webest.net, 2002-2007  

    top.mail.ru
    » Бесплатный счетчик посещений
    » Рейтинг сайтов