Einzelnen Beitrag anzeigen

Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
459 Beiträge
 
Delphi XE4 Professional
 
#1

Screenshot von Fenster mit Transparenter Farbe

  Alt 20. Aug 2010, 10:43
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\
/ \

Geändert von erich.wanker (20. Aug 2010 um 14:03 Uhr)
  Mit Zitat antworten Zitat