Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> GetScreenWindow 
:(
    Опции темы
php
Дата 20.2.2003, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.2.2003

Репутация: нет
Всего: 3



Как сделать снимок не всего экрана, а какого либо окна..?
--------------------
Джедаи не пройдут..
PM MAIL   Вверх
Mikel
Дата 20.2.2003, 02:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 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
PM MAIL ICQ   Вверх
Song
Дата 20.2.2003, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



TCanvas.CopyRect()
BitBlt()


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
php
Дата 21.2.2003, 02:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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;

но получаю весь раб.стол в чём ошибка?..
--------------------
Джедаи не пройдут..
PM MAIL   Вверх
Mikel
Дата 21.2.2003, 03:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



Так вы копируйте с высотой и шириной окна. И у вас код показывает активное окно, а если его нет, то рабочий стол.


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Song
Дата 22.2.2003, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Надо сначала определить окно, которое хотите отснять (90% даю, что верхнее), то бишь его определяем через GetForGroundWindow. Далее определяем его размеры - GetWindowRect(). Ну, а далее по вашему исходнику без проблем smile.gif


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
dark0ut
Дата 24.2.2003, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 20.2.2003

Репутация: нет
Всего: нет



Ctrl+Shift+Alt+Print Screen smile.gifsmile.gifsmile.gif
Помогает!
PM MAIL WWW ICQ   Вверх
php
Дата 28.2.2003, 01:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.2.2003

Репутация: нет
Всего: 3



Как сделать чтоб прога сама определяла размеры этого окна и делала его
снимок.?

Или куда именно вставить этот GetWindowRect() ?

То DarkOut: Ctrl+Shift+Alt+Print Screen не помогает !!!
--------------------
Джедаи не пройдут..
PM MAIL   Вверх
Unregistered
Дата 28.2.2003, 02:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
Дата 28.2.2003, 14:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 20.2.2003

Репутация: нет
Всего: 3



Пишет Undeclared identifier: 'Width' на этой строке

bm.Width:= Rect.Width; confused.gif
--------------------
Джедаи не пройдут..
PM MAIL   Вверх
Mikel
Дата 28.2.2003, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 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
PM MAIL ICQ   Вверх
-=Fox=-
Дата 2.3.2003, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 5.2.2003

Репутация: нет
Всего: нет



Могу выслать на мыло модуль в котором реалезовано следующее:
1. снимоквсего экрана
2. снимок ативного окна
3. снимок части экрана


PM MAIL   Вверх
Medved
Дата 2.3.2003, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



лучше выложи ссылку...


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
-=Fox=-
Дата 4.3.2003, 03:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 69
Регистрация: 5.2.2003

Репутация: нет
Всего: нет



Всем привет!

Вот линк

ScrCap


PM MAIL   Вверх
Medved
Дата 5.3.2003, 06:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 7209
Регистрация: 15.9.2002
Где: Kazakhstan, Astan a

Репутация: 14
Всего: 154



ссылка мертвая


--------------------
http://extreme.sport-express.ru/
...и неважно сколько падал, важно сколько ты вставал...
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1853 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.