![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Снова привет.
Объясните недалекому. Есть: Код:
function CaptureScreenRect( ARect: TRect )
: TBitmap;
var
ScreenDC: HDC;
begin
Result := TBitmap.Create;
Result.Width := ARect.Right - ARect.Left;
Result.Height := ARect.Bottom - ARect.Top;
ScreenDC := GetDC( 0 );
try
BitBlt ( Result.Canvas.Handle, 0, 0, Result.Width,
Result.Height, ScreenDC,
ARect.Left, ARect.Top, SRCCOPY );
finally
ReleaseDC( 0, ScreenDC );
end;
end;Код:
procedure GetSceen;
var
pt : TPoint;
r : TRect;
h : HWND;
bit: TBitmap;
begin
bit:=TBitmap.Create;
GetCursorPos(pt);
h:=WindowFromPoint( pt );
GetWindowRect( h, r );
bit:=CaptureScreenRect( r );
bit.SaveToFile(ExtractFilePath(Application.ExeName)+'123.bmp');
with ScreenFRM do
begin
Image1.Picture.Bitmap:=bit;Вызов В: Если вызвать в OnShow То все прекрасно работает. Код:
procedure TScreenFRM.FormShow(Sender: TObject);
var
pt : TPoint;
r : TRect;
h : HWND;
bit: TBitmap;
begin
bit:=TBitmap.Create;
h:=WindowFromPoint( Mouse.CursorPos );
GetWindowRect( h, r );
Image1.Picture.Bitmap:= CaptureScreenRect( r );Последний раз редактировалось nixon232, 27.05.2017 в 21:54. |