Главная страница
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.046 c
8-1126809916
-keks-
2005-09-15 22:45
2006.02.26
bmp в jpg


15-1139272822
Ы
2006-02-07 03:40
2006.02.26
Просто смешно и уже надоело


9-1125575221
McSource
2005-09-01 15:47
2006.02.26
Обновление OpenGL


2-1139682980
Интересующийся
2006-02-11 21:36
2006.02.26
Получить данные из INI


2-1139411905
GoshaT
2006-02-08 18:18
2006.02.26
Изменить массив