Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.26;
Скачать: CL | DM;

Вниз

Как получить изобр. окна, найдя его handle с помощью FindWindow?   Найти похожие ветки 

 
Volf_555   (2006-01-27 02:33) [0]

Как получить изображение (как при нажатие Alt+PrintScreen) окна, найдя его handle с помощью FindWindow?


 
Джо ©   (2006-01-27 02:34) [1]

Get[Window]Dc, BitBlt.


 
Volf_555   (2006-01-27 02:50) [2]

Пробывал следующим образом - окно находит, но изображение не получает:

procedure TForm1.Button1Click(Sender: TObject);
var
s:Integer;
a:TBitMap;
begin
a:=TBitMap.Create;
s:=FindWindow(nil,"Статистика Онлайн");
if s<>0 then
begin
 ShowMessage("!!!");
 GetWindowDC(s);
 a.Canvas.Handle:=s;
 Image1.Picture.Bitmap.Assign(a);
end;
end;


 
Volf_555   (2006-01-27 02:58) [3]

Пробывал следующий код:
procedure TForm1.Button1Click(Sender: TObject);
var
s:Integer;
a:TBitMap;
begin
a:=TBitMap.Create;
s:=FindWindow(nil,"Статистика Онлайн");
if s<>0 then
begin
 ShowMessage("!!!");
 BitBlt(GetDC(s),0,0,screen.Width,screen.Height,image1.Canvas.Handle,0,0,1);
end;
end;

В результате Image1 заливается чисто белым цветом


 
PKT   (2006-01-27 04:13) [4]

var
 Wnd: HWND;
 DC: HDC;
 R: TRect;
 B: TBitmap;
begin
 Wnd := FindWindow(nil, "Статистика Онлайн");
 if Wnd <> 0 then begin
   DC := GetWindowDC(Wnd);
   if DC <> 0 then begin
     GetWindowRect(Wnd, R);

     B := TBitmap.Create;
     B.Width := R.Right - R.Left;
     B.Height := R.Bottom - R.Top;

     BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);

     Image1.Picture.Assign(B);
   end;
 end;
end;


Если, конечно, "Статистика Онлайн" не перекрыта другими окнами.


 
PKT   (2006-01-27 04:22) [5]

Прошу пардону,
конечно же B.Free и ReleaseDC


 
Volf_555   (2006-01-27 21:37) [6]

Написал следующее:


procedure TForm1.Button1Click(Sender: TObject);
var
Wnd: HWND;
DC: HDC;
R: TRect;
B: TBitmap;
begin
Wnd := FindWindow(nil, "Статистика Онлайн");
if Wnd <> 0 then begin
  DC := GetWindowDC(Wnd);
  ReleaseDc(Wnd,DC);
  if DC <> 0 then begin
    GetWindowRect(Wnd, R);

    B := TBitmap.Create;
    B.Width := R.Right - R.Left;
    B.Height := R.Bottom - R.Top;

    BitBlt(B.Canvas.Handle, 0, 0, B.Width, B.Height, DC, 0, 0, SRCCOPY);

    Image1.Picture.Assign(B);
  end;
  B.Free;
end;
end;


Результат тот же - белое окно. По нажатии на кнопку форма становилась скрытой, запускался таймер, по таймеру происходило нажатие на кнопку на Button1, показывалась форма с результатом. Результат - белое окно....



Страницы: 1 вся ветка

Текущий архив: 2006.02.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.045 c
2-1139751801
smus811
2006-02-12 16:43
2006.02.26
Регистронезависимые запросы.


11-1120535815
Fanny
2005-07-05 07:56
2006.02.26
Проблемы с динамическими массивами


15-1139395548
M@D
2006-02-08 13:45
2006.02.26
Активная дириктория &amp; Delphi


15-1139395391
Dec
2006-02-08 13:43
2006.02.26
КПК


4-1134166676
Volf_555
2005-12-10 01:17
2006.02.26
Ошибка при получинии первых восьми символов строки