Снимок неактивного окна?
От: Аноним  
Дата: 24.10.04 15:22
Оценка:
Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?
Re: Снимок неактивного окна?
От: BlackHeretic Израиль  
Дата: 24.10.04 16:27
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?


Можно. Ctrl+PrntScr, потом вырезаете в редакторе свое окно. Если хочется сделать по привычному Alt+PrntScr, то откуда винда может знать что конкретно вы хотите...
Или я не понял вопрос?
ICQ 156156278
Re[2]: Снимок неактивного окна?
От: Аноним  
Дата: 24.10.04 18:00
Оценка:
Здравствуйте, BlackHeretic, Вы писали:

BH>Здравствуйте, Аноним, Вы писали:


А>>Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?


BH>Можно. Ctrl+PrntScr, потом вырезаете в редакторе свое окно. Если хочется сделать по привычному Alt+PrntScr, то откуда винда может знать что конкретно вы хотите...

BH>Или я не понял вопрос?
Это че мне генерировать нажатие кнопок надо с помощью SendMessage? Ну это по моему перебор. Мне же программно надо это сделать.
Нашел функцию PrintWindow, но работает только на новых ОС. А может есть способ для всех ОС? Кто знает?
Re: Снимок неактивного окна?
От: c-smile Канада http://terrainformatica.com
Дата: 24.10.04 18:12
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?


Попробуй послать ему WM_PRINT

Успехов
Re[2]: Снимок неактивного окна?
От: Аноним  
Дата: 24.10.04 19:22
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, Аноним, Вы писали:


А>>Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?


CS>Попробуй послать ему WM_PRINT


CS>Успехов

Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?
Re[3]: Снимок неактивного окна?
От: Pavel Dvorkin Россия  
Дата: 25.10.04 05:50
Оценка:
Привет!

Unknown wrote:
> Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

А как ты хочешь, чтобы они откликнулись ? Ты должен hdc передать в этом
сообщении, в котором они себя и нарисуют. В hdc должна быть выбрана hBmp

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.9 gamma
With best regards
Pavel Dvorkin
Re[3]: Снимок неактивного окна?
От: Тигра Беларусь  
Дата: 25.10.04 09:03
Оценка:
Здравствуйте, Аноним, Вы писали:

CS>>Успехов

А>Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

Вообще-то WM-PRINT — это не панацея.
здесь
Автор: Тигра
Дата: 21.04.03
Re[4]: Снимок неактивного окна?
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.10.04 09:39
Оценка:
CS>>>Успехов
А>>Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

Т>Вообще-то WM-PRINT — это не панацея.

Т>здесь
Автор: Тигра
Дата: 21.04.03


Вообще то — панацея. Идея и *относительно* кривая реализация — у Фень Юаня, остальное — дело времени и терпения.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[4]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 10:00
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Привет!


PD>Unknown wrote:

>> Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

PD>А как ты хочешь, чтобы они откликнулись ? Ты должен hdc передать в этом

PD>сообщении, в котором они себя и нарисуют. В hdc должна быть выбрана hBmp

PD>--

PD>With best regards,
PD> Pavel Dvorkin
А ты что думаешь я его просто так шлю, без Hdc? Это не мой способ работы — рассылать всем окнам сообщения с NULL параметрами! Все окна, кроме моего собственного возвращают черный экран, мое собственное окно возвращает все нормально.
Мда и про Вень Хуаня хочу сказать. Видел я его пример реализации и даже запускал пару раз. Но сразу настораживает, что не работает под 9х. И что после такого скриншота окну больше не жить. Смертельные скриншоты — это конечно прикольно, как предсмертное фото, но хотелось бы узнать можно ли сделать так, чтоб окно жило обычной жизнью после снимка?
Re: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 10:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?


И еще вопросец для знатоков. В Windows XP есть функция PrintWindow. Кто-нить имеет у себя dll с реализацией этой функцией для других ОС. Для не знающих(особо умных): если такая библиотека есть, то она реализована не m$. И делалась она путем дизассемблирования библиотек виндоус. Как это сделано для функции OpenThread для Windows 95. Которой в стандартном API не существует.
Re[5]: Снимок неактивного окна?
От: Pavel Dvorkin Россия  
Дата: 25.10.04 12:53
Оценка:
Привет!

Unknown wrote:
> А ты что думаешь я его просто так шлю, без Hdc? Это не мой способ работы — рассылать всем окнам сообщения с NULL параметрами! Все окна, кроме моего собственного возвращают черный экран, мое собственное окно возвращает все нормально.

Ну не знаю. Если у окна есть в настоящее время содержимое (т.е. оно
полностью не перекрыто) — у меня возвращало нормальную картинку. Если
полностью перекрыто, конечно, нет.

Давай код, посмотрю.

--
With best regards,
Pavel Dvorkin
Posted via RSDN NNTP Server 1.9 gamma
With best regards
Pavel Dvorkin
Re[6]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 15:42
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Привет!


PD>Unknown wrote:

>> А ты что думаешь я его просто так шлю, без Hdc? Это не мой способ работы — рассылать всем окнам сообщения с NULL параметрами! Все окна, кроме моего собственного возвращают черный экран, мое собственное окно возвращает все нормально.

PD>Ну не знаю. Если у окна есть в настоящее время содержимое (т.е. оно

PD>полностью не перекрыто) — у меня возвращало нормальную картинку. Если
PD>полностью перекрыто, конечно, нет.

PD>Давай код, посмотрю.


PD>--

PD>With best regards,
PD> Pavel Dvorkin

Ну собственно код я взял из примера Фунь Хуаня(кажется так):
HDC hDCMem = CreateCompatibleDC(NULL);
RECT rect;
GetWindowRect(hWnd, & rect);
HBITMAP hBmp = NULL;
{
HDC hDC = GetDC(hWnd);
hBmp = CreateCompatibleBitmap(hDC, rect.right — rect.left, rect.bottom — rect.top);
ReleaseDC(hWnd, hDC);
}
HGDIOBJ hOld = SelectObject(hDCMem, hBmp);
SendMessage(hWnd, WM_PRINT, (WPARAM) hDCMem, PRF_CHILDREN | PRF_CLIENT | PRF_ERASEBKGND | PRF_NONCLIENT | PRF_OWNED);
SelectObject(hDCMem, hOld);
DeleteObject(hDCMem);
OpenClipboard(hWnd);
EmptyClipboard();
SetClipboardData(CF_BITMAP, hBmp);
CloseClipboard();

А hWnd собственно = GetForegroundWindow(). Надо потом окно нужное сделать активным и по таймеру мое приложение его в буфер и положит. Но кладет черный экран, если это не оно само.
Re[2]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 15:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Аноним, Вы писали:


А>>Здрасти. Как вы думаете можно ли сделать snapshot для любого окна под WindowsXP? И если можно, то как?


А>И еще вопросец для знатоков. В Windows XP есть функция PrintWindow. Кто-нить имеет у себя dll с реализацией этой функцией для других ОС. Для не знающих(особо умных): если такая библиотека есть, то она реализована не m$. И делалась она путем дизассемблирования библиотек виндоус. Как это сделано для функции OpenThread для Windows 95. Которой в стандартном API не существует.


Ага я так понимаю нет не у кого. Хорошо тогда может кто ссылочки кинет на подобные сайты.
Re[5]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 15:47
Оценка:
Здравствуйте, Andrew S, Вы писали:

CS>>>>Успехов

А>>>Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

Т>>Вообще-то WM-PRINT — это не панацея.

Т>>здесь
Автор: Тигра
Дата: 21.04.03


AS>Вообще то — панацея. Идея и *относительно* кривая реализация — у Фень Юаня, остальное — дело времени и терпения.


Уважаемый, так может подумаем над *относительно* НЕ кривой реализацией. Или может есть места где уже подумали над этим вопросом. В противном случае этот вопрос так и будет всплывать на форуме.
Re[6]: Снимок неактивного окна?
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.10.04 16:02
Оценка:
CS>>>>>Успехов
А>>>>Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

Т>>>Вообще-то WM-PRINT — это не панацея.

Т>>>здесь
Автор: Тигра
Дата: 21.04.03


AS>>Вообще то — панацея. Идея и *относительно* кривая реализация — у Фень Юаня, остальное — дело времени и терпения.


А>Уважаемый, так может подумаем над *относительно* НЕ кривой реализацией. Или может есть места где уже подумали над этим вопросом. В противном случае этот вопрос так и будет всплывать на форуме.


Пример Фень Юаня у меня вполне работает. Есть какие-то вопросы по конкретным местам кода — спрашивайте.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[7]: Снимок неактивного окна?
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.10.04 16:06
Оценка:
А>Ну собственно код я взял из примера Фунь Хуаня(кажется так):
Да уж, с точностью до байта :
http://www.fengyuan.com/article/wmprint.html
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[7]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 16:35
Оценка:
Здравствуйте, Andrew S, Вы писали:

CS>>>>>>Успехов

А>>>>>Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

Т>>>>Вообще-то WM-PRINT — это не панацея.

Т>>>>здесь
Автор: Тигра
Дата: 21.04.03


AS>>>Вообще то — панацея. Идея и *относительно* кривая реализация — у Фень Юаня, остальное — дело времени и терпения.


А>>Уважаемый, так может подумаем над *относительно* НЕ кривой реализацией. Или может есть места где уже подумали над этим вопросом. В противном случае этот вопрос так и будет всплывать на форуме.


AS>Пример Фень Юаня у меня вполне работает. Есть какие-то вопросы по конкретным местам кода — спрашивайте.


На счет точности до байта я с этого примера его и скопировал Ибо свой,блин,удалил. Вопросы конечно есть. Например почему окно надо закрывать после снимка. Можно ли сделать так, чтобы оно дальше жило?. Мда, и как насчет 9х будет ли там работатью, он ведь вроде обещает, что нет. Еще вопрос функция PrintWindow в Windows XP как грабит сообщения посылает или из памяти берет. Может посмотреть ее исходники(дизасемблер) и сделать так же?
Re[8]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 16:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Andrew S, Вы писали:


CS>>>>>>>Успехов

А>>>>>>Я всем подряд его шлю(WM_PRINT), но пока никто не откликунулся( Это нормально или я что-то не так делаю?

Т>>>>>Вообще-то WM-PRINT — это не панацея.

Т>>>>>здесь
Автор: Тигра
Дата: 21.04.03


AS>>>>Вообще то — панацея. Идея и *относительно* кривая реализация — у Фень Юаня, остальное — дело времени и терпения.


А>>>Уважаемый, так может подумаем над *относительно* НЕ кривой реализацией. Или может есть места где уже подумали над этим вопросом. В противном случае этот вопрос так и будет всплывать на форуме.


AS>>Пример Фень Юаня у меня вполне работает. Есть какие-то вопросы по конкретным местам кода — спрашивайте.


На счет точности до байта я с этого примера его и скопировал Ибо свой,блин,удалил. Вопросы конечно есть. Например почему окно надо закрывать после снимка. Можно ли сделать так, чтобы оно дальше жило?. Мда, и как насчет 9х будет ли там работатью, он ведь вроде обещает, что нет. Еще вопрос функция PrintWindow в Windows XP как грабит сообщения посылает или из памяти берет. Может посмотреть ее исходники(дизасемблер) и сделать так же?

Самое важное забыл. Получается, что есть 2 варианта работы Windows:
1. Если окно перекрыто другими окнами, то оно впринципе не прорисовано. И его сграбить вообще не возможно. Можно только как Фень Хуань попросить его: "Не могли бы вы нарисоваться в этот контекст устройства таким каким бы вы были, если вдруг стали активным." Т.е. послать ему сообщение.
2. Окно всетаки прорисовано. (Вероятно в 9х, если мы сворачиваем окно , то оно просто напросто перемещается на координаты х=3000, у=3000). Тогда можно сграбить его, вопрос в том как.
Какой из этих вариантов — реальный не знаю. А кто знает?
Re[9]: Снимок неактивного окна?
От: Andrew S Россия http://alchemy-lab.com
Дата: 25.10.04 17:37
Оценка:
А>На счет точности до байта я с этого примера его и скопировал Ибо свой,блин,удалил. Вопросы конечно есть. Например почему окно надо закрывать после снимка. Можно ли сделать так, чтобы оно дальше жило?. Мда, и как насчет 9х будет ли там работатью, он ведь вроде обещает, что нет.

Если бы вы внимательно прочитали предложенную ссылку, то эти вопросы у вас бы не возникли. Прочитайте.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[10]: Снимок неактивного окна?
От: Аноним  
Дата: 25.10.04 20:18
Оценка:
Здравствуйте, Andrew S, Вы писали:

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


AS>Если бы вы внимательно прочитали предложенную ссылку, то эти вопросы у вас бы не возникли. Прочитайте.

Я это читал много раз и даже жо того как задал вопрос. И все же как работает PrintWindow, как Юань прописал?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.