Hallo Leute,
hab eine Frage zu einem "altbekannten Thema": Screenshot von einem Fenster das keine Titelbar besitzt - aber eine transparente Farbe.
MSDN sagt ja, daß "CaptureBLT" alles kopiert ->
msdn, aber irgendwie schaff ich es nicht, vom
DC(0) ein komplettes Bild abzugreifen
Mein Codeschnipsterl:
Delphi-Quellcode:
procedure ScreenShot(activeWindow: bool; destBitmap : TBitmap) ;
var
w,h : integer;
DC : HDC;
hWin : Cardinal;
const
CAPTUREBLT = $40000000;
begin
hWin := GetDesktopWindow;
dc := GetDC(hWin);
dc := GetDC(0);
w := GetDeviceCaps (
DC, HORZRES);
h := GetDeviceCaps (
DC, VERTRES);
try
destBitmap.Width := w;
destBitmap.Height := h;
BitBlt(destBitmap.Canvas.Handle,
0,
0,
destBitmap.Width,
destBitmap.Height,
DC,
0,
0,
SRCCOPY
or CAPTUREBLT) ;
finally
ReleaseDC(hWin,
DC) ;
end;
end;
Beschreibung vom Form:
Form.color = Yellow
Transparent color = yellow
Borderstyle = bsnone
auf Form ist einegraue Paintbox mit abgerundeten Ecken, wo ich reinzeichne
Vielen Dank für Hinweise
Erich
Nachtrag: Die zweite "
DC:=" -Zeile ist beim probieren übersehen worden, änder aber eh nix
dc := GetDC(hWin);
dc := GetDC(0);
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \