我想使用此代碼德爾福活動窗口截圖
procedure ScreenShot(activeWindow: bool; destBitmap : TBitmap) ;
var
w,h : integer;
DC : HDC;
hWin : Cardinal;
r : TRect;
begin
if activeWindow then
begin
hWin := GetForegroundWindow;
dc := GetWindowDC(hWin) ;
GetWindowRect(hWin,r) ;
w := r.Right - r.Left;
h := r.Bottom - r.Top;
end
else
begin
hWin := GetForegroundWindow;
dc := GetDC(hWin) ;
w := GetDeviceCaps (DC, HORZRES) ;
h := GetDeviceCaps (DC, VERTRES) ;
end;
try
destBitmap.Width := w;
destBitmap.Height := h;
BitBlt(destBitmap.Canvas.Handle,
0,
0,
destBitmap.Width,
destBitmap.Height,
DC,
0,
0,
SRCCOPY) ;
finally
ReleaseDC(hWin, DC) ;
end;
end;
而且在Button1的我使用添加活動窗口的捕捉截屏:
var
path:string;
b:TBitmap;
begin
path:= ExtractFilePath(Application.ExeName) + '/Screenshot/';
b := TBitmap.Create;
try
ScreenShot(TRUE, b) ;
b.SaveToFile(path + 'Screenshot_1.png');
finally
b.FreeImage;
FreeAndNil(b) ;
end;
end;
它做工不錯唯一的問題是它不能捕捉稱號巴:(
這裏到處是活動窗口視圖:
這裏是我從該代碼
如果我做錯了什麼?得到
參見[這個答案](HTTP測試://計算器。com/q/16700014/62576)到一個類似的問題。它應該有所幫助。 –
改爲使用'GetWindowDC'。 –
@KenWhite在答案中的代碼給我錯誤在Bitmap.SetSize(寬度,高度);說Undeclared標識符:'SetSize' – dudey