![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Как сделать снимок не всего экрана, а какого либо окна..?
--------------------
Джедаи не пройдут.. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Var DC:hDC;
Can:TCanvas; FW:hWnd; begin FW:=GetForegroundWindow; DC:=GetDC(FW); Can:=TCanvas.create; Can.Handle:=DC; {Скопировать с can на canvas того, где будите обрабатывать} Can.Free; ReleaseDC(FW,DC); end; Это сообщение отредактировал(а) Mikel - 20.2.2003, 02:08 -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
TCanvas.CopyRect()
BitBlt() -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Делаю так:
bm := TBitMap.Create; with bm do begin FW:=GetForegroundWindow; bm.Width := Screen.Width; bm.Height := Screen.Height; DC:= GetDC(FW); try BitBlt(bm.Canvas.Handle, 1, 1, bm.Width, bm.Height, GetDC(FW), 0, 0, SRCCOPY); finally ReleaseDC(FW, DC); end; end; Try bm.SaveToFile('C:\xxx.bmp'); except bm.Destroy; но получаю весь раб.стол в чём ошибка?.. --------------------
Джедаи не пройдут.. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Так вы копируйте с высотой и шириной окна. И у вас код показывает активное окно, а если его нет, то рабочий стол.
-------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Надо сначала определить окно, которое хотите отснять (90% даю, что верхнее), то бишь его определяем через GetForGroundWindow. Далее определяем его размеры - GetWindowRect(). Ну, а далее по вашему исходнику без проблем
-------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
| dark0ut |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 20.2.2003 Репутация: нет Всего: нет |
Ctrl+Shift+Alt+Print Screen
Помогает! |
|||
|
||||
| php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Как сделать чтоб прога сама определяла размеры этого окна и делала его
снимок.? Или куда именно вставить этот GetWindowRect() ? То DarkOut: Ctrl+Shift+Alt+Print Screen не помогает !!! --------------------
Джедаи не пройдут.. |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
GetWindowRect возвращает размеры окна ввиде TRect, т.е. можно сделать так
var Rect:TRect; bm := TBitMap.Create; with bm do begin FW:=GetForegroundWindow; GetWindowRect(FW, Rect); bm.Width := Rect.Width; bm.Height := Rect.Height; DC:= GetDC(FW); try BitBlt(bm.Canvas.Handle, 1, 1, bm.Width, bm.Height, GetDC(FW), 0, 0, SRCCOPY); finally ReleaseDC(FW, DC); end; end; Try bm.SaveToFile('C:\xxx.bmp'); except bm.Destroy; |
|||
|
||||
| php |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 20.2.2003 Репутация: нет Всего: 3 |
Пишет Undeclared identifier: 'Width' на этой строке
bm.Width:= Rect.Width; --------------------
Джедаи не пройдут.. |
|||
|
||||
| Mikel |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 882 Регистрация: 30.3.2002 Где: Саратов Репутация: 1 Всего: 2 |
Rect.Width=Rect.Right-Rect.Left
Rect.Height=Rect.Bottom-Rect.Top -------------------- ...so remember, it's better to burn out than to fade away |
|||
|
||||
| -=Fox=- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 5.2.2003 Репутация: нет Всего: нет |
Могу выслать на мыло модуль в котором реалезовано следующее:
1. снимоквсего экрана 2. снимок ативного окна 3. снимок части экрана |
|||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
лучше выложи ссылку...
-------------------- |
|||
|
||||
| -=Fox=- |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 69 Регистрация: 5.2.2003 Репутация: нет Всего: нет |
||||
|
||||
| Medved |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
ссылка мертвая
-------------------- |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |