сохранить содержимое чужого окна в bmp
От: Juli  
Дата: 15.10.05 11:34
Оценка:
Добрый день!
Проблема следующая: есть hWnd окна чужого процесса (фотошопа), хочу сохранить его содержимое в bmp файл. Как бы это сделать? Что-то типа GetDC(hWnd) ... А дальше ?

Ничего не получается и я тут плачу
Re: сохранить содержимое чужого окна в bmp
От: swamper  
Дата: 15.10.05 12:19
Оценка:
Здравствуйте, Juli, Вы писали:

J>Добрый день!

J>Проблема следующая: есть hWnd окна чужого процесса (фотошопа), хочу сохранить его содержимое в bmp файл. Как бы это сделать? Что-то типа GetDC(hWnd) ... А дальше ?

J>Ничего не получается и я тут плачу


Ну как.


HDC hDC = GetDC(hWNd);
BITMAP bm;
GetObject(HBITMAP,sizeof(bm),&bm);


Получаем содержимое окна в формате bmp. Осталось скинуть в файл. Для этого нужно

1. Заполнить структуру BITMAPFILEHEADER и скинуть в файл.
2. Заполнить структуру BITMAPINFOHEADER и скинуть в файл.
3. Скинуть в файл битовый образ.
Re: сохранить содержимое чужого окна в bmp
От: kero Россия  
Дата: 15.10.05 12:25
Оценка:
Здравствуйте, Juli, Вы писали:

J>Добрый день!

J>Проблема следующая: есть hWnd окна чужого процесса (фотошопа), хочу сохранить его содержимое в bmp файл. Как бы это сделать? Что-то типа GetDC(hWnd) ... А дальше ?

J>Ничего не получается и я тут плачу


Можете использовать вот это как тулзу: http://www.geocities.com/xmemor/2lz/doublesnapfrompoint.zip (8 kb),
а можете и посмотреть исходник (там же).
По всему, пашиным хозяевам позарез нужна война в Европе
(уверены — к ним не залетит, в предыдущих двух не залетало жеж)
Автор: kero
Дата: 21.07.14
Re: сохранить содержимое чужого окна в bmp
От: RST_Angellab  
Дата: 15.10.05 14:55
Оценка:
Здравствуйте, Juli, Вы писали:

J>Добрый день!

J>Проблема следующая: есть hWnd окна чужого процесса (фотошопа), хочу сохранить его содержимое в bmp файл. Как бы это сделать? Что-то типа GetDC(hWnd) ... А дальше ?

J>Ничего не получается и я тут плачу


Весьма грустно вам будет. Т.к. блиттинг работает не совсем так как ожидается. К примеру Overlapped области он не будет корректно копировать. Т.е. фактически в BMP получится только то, что видно на экране.

Можно попробовать WM_PRINT , либо PrintWindow (winxp+), но по-моему это будет работать только для текущего процесса.
Можно попробовать с помощью внедрения в чужой процесс : SetWindowHook(Message) SendMessage фотошопу, и Dllка, которая хук обрабатывает из контекста процесса фотошопа сделает PrintWindow.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.