Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизКончается память Найти похожие ветки
← →
Непомнящий (2012-04-17 00:16) [0]
function FindPictureInWindow(HWN: HWND; tBmpTarget: string; Coord: TCoord;
defaultPlace: boolean = true; k: extended = 0.6): TCoord;
var
tBmp2: TBitmap;
r: Trect;
hDC1: HDC;
hSrcDC: HDC;
hBmp: HBITMAP;
begin
if (HWN > 32) then
begin
while (IsIconic(HWN)) do
ShowWindow(HWN, SW_SHOWNORMAL); // делает окно активным
sleep(200);
tBmp2 := TBitmap.Create;
tBmp2.PixelFormat := pf24bit;
GetWindowRect(HWN, r);
hDC1 := GetDC(HWN);
hSrcDC := CreateCompatibleDC(hDC1);
hBmp := CreateCompatibleBitmap(hDC1, r.right - r.left, r.bottom - r.top);
SelectObject(hSrcDC, hBmp);
PrintWindow(HWN, hSrcDC, 0);
BitBlt(hDC1, 0, 0, r.right - r.left, r.bottom - r.top, hSrcDC, 0,
0, SRCCOPY);
tBmp2.Handle := hBmp;
tBmp2.PixelFormat := pf24bit;
result := Coord;
tBmp2.Free;
end;
end;
Есть примерно такой код, куски которые не меняют сути вопроса (Т.е. запускаю программу я вот в таком именно виде и получаю нижеописаный результат) я убрал. вообщем запускаю эту процедуру в бесконечном цикле и смотрю в диспетчер задач винды. и вижу, что программа не увеличивается в размере. И ниодин из видимых мною процессов тоже не увеличивается (я не заметил). Но внизу возле надписи "Физическая память " начинает постепенно расти количество процентов. На 76-77% все это дело вылетает либо по недостатку памяти, либо взятый скриншот становится равным 0 килобайт и процесс длится бесконечно. Ни тот ни другой результат меня понятное дело не устраивает. Вопрос в чем же дело?
← →
Ega23 © (2012-04-17 00:55) [1]
> hBmp := CreateCompatibleBitmap(hDC1, r.right - r.left,
> r.bottom - r.top);
http://msdn.microsoft.com/en-us/library/dd183488%28v=vs.85%29.aspx
When you no longer need the bitmap, call the DeleteObject function to delete it.
← →
Непомнящий (2012-04-17 01:36) [2]DeleteObject(hBmp);
DeleteObject(hDC1);
DeleteObject(hSrcDC);
вот так вродь помогло. Спасибо.
Еще бы вот избавится от сдвигания фотографируемого окна в правый нижний угол на пару сантиметров (оно тут же возвращается на место и происходит это внутри рамки окна), которое в результате порождает дико раздражающее мерцание (
← →
Германн © (2012-04-17 01:37) [3]
> Ega23 © (17.04.12 00:55) [1]
+
> hSrcDC := CreateCompatibleDC(hDC1);
http://msdn.microsoft.com/en-us/library/dd183489%28v=VS.85%29.aspx
When you no longer need the memory DC, call the DeleteDC function.
← →
Германн © (2012-04-17 01:38) [4]Опоздал :(
← →
han_malign (2012-04-17 10:21) [5]
> Еще бы вот избавится от сдвигания фотографируемого окна
- ну дык, BitBlt - убери, и будет тебе счастье...
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.074 c