Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2010, 09:01   #11
Sanya111
 
Регистрация: 16.04.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от liljon Посмотреть сообщение
А если данное окно находиться под другим окном?
да


=================================== ================


function PrintWindow(HWND:HWND;hdcBlt:HDC;nF lags:DWORD):BOOL; stdcall; external 'user32.dll';

procedure TForm1.Button1Click(Sender: TObject);
var
rcSrc:Trect;
hSrcWnd:HWND;
hDC1:HDC;
hSrcDC:HDC;
hBmp:HBITMAP ;
tBmp:TBitmap;
begin
tbmp:=TBitmap.Create;

hSrcWnd := FindWindow(nil, PChAR('Безымянный - Блокнот')); // "*********" - имя нужного окна
GetWindowRect(hSrcWnd, rcSrc);

hDC1:= GetDC(hSrcWnd);
hSrcDC:=CreateCompatibleDC(hDC1);
hBmp := CreateCompatibleBitmap(hDC1, rcSrc.right - rcSrc.left, rcSrc.bottom - rcSrc.top);

SelectObject(hSrcDC, hBmp);
PrintWindow(hSrcWnd, hSrcDC, 0);


tbmp.Handle:=hbmp;
{tbmp.SaveToFile('c:\1.bmp'); }

image1.Picture.Bitmap.Assign(tbmp);



DeleteObject(hBmp);
DeleteDC(hSrcDC);
ReleaseDC(hSrcWnd, hDC1);

tbmp.Free;

end;


Скрин не хочет прорисовываться в TImage
Sanya111 вне форума Ответить с цитированием
Старый 19.05.2010, 11:27   #12
oooooo111
 
Регистрация: 28.01.2010
Сообщений: 6
По умолчанию

Подскажите пожалуйста, а если нужно делать скрин закладки в браузере (Opera, Firefox) как это реализовать?
Т.е. само окно браузера может быть и не свёрнуто, просто открыта другая вкладка, а скрин необходимо делать заданого окна?
Будет ли работать если прописать например:

hSrcWnd := FindWindow(nil, PChAR('Google - Opera')); // "*********" - имя нужного окна

И одинаков ли будет код в случае если окно свёрнуто, или просто открыта другая вкладка?
Заранее спасибо за ответы.
oooooo111 вне форума Ответить с цитированием
Старый 19.05.2010, 11:40   #13
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

для Оперы можно попробывать то что вы хотите, ибо у нее каждая вкладка это отдельное окно.(всмысле не форма, а то мало ли)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.05.2012, 21:52   #14
red6ds
 
Регистрация: 01.05.2012
Сообщений: 6
Вопрос ???????

Цитата:
Сообщение от B_N Посмотреть сообщение
Подозреваю, что это связано с путаницей с контекстами. Из-за отсутствия Delphi не могу проверить "живьём" данный код, но вот такой код на C прекрасно копирует "чужое" окно, даже если оно за границами экрана:

Код:
		RECT rcSrc;
		HWND hSrcWnd;
		HDC hDC, hSrcDC;
		HBITMAP hBmp;

		hSrcWnd = FindWindow(NULL, "*********"); // "*********" - имя нужного окна
		GetWindowRect(hSrcWnd, &rcSrc);

		hDC = GetDC(hWnd);
		hSrcDC = CreateCompatibleDC(NULL);
		hBmp = CreateCompatibleBitmap(hDC, rcSrc.right - rcSrc.left, rcSrc.bottom - rcSrc.top);
			
		SelectObject(hSrcDC, hBmp);
		PrintWindow(hSrcWnd, hSrcDC, 0);

		BitBlt(
			hDC, 
			0,
			0,
			rcSrc.right - rcSrc.left, 
			rcSrc.bottom - rcSrc.top,
			hSrcDC, 
			0,
			0,
			SRCCOPY);
	
		DeleteObject(hBmp);
		DeleteDC(hSrcDC);
		ReleaseDC(hWnd, hDC);

error C2065 'hWnd' : undeclared identifier
Дает такую ошибку... как исправит...
red6ds вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция ZiLi Microsoft Office Excel 1 05.09.2008 18:37
функция sergei64_89 Общие вопросы C/C++ 2 25.05.2008 16:48
функция Janette Помощь студентам 1 29.04.2008 20:10
одна функция потока, а другая функция - член класса запускающего этот поток Дмитрий_Ч Общие вопросы C/C++ 2 27.09.2007 08:50