![]() |
Screenshot von Flashobjekten mit dem Attribut wmode="opaque"
Guten Abend,
ich versuche einen Screenshot einer Flashanwendung auf Facebook zu machen. bei anderen Anwendungen, beispielsweise YouToube bekomme ich den Screenshot ohne Probleme, nur bei Facebook will es nicht funktionieren. Ich bekomme stets nur ein BitMap, das 1x1 Px groß ist. So bekomme ich meinen Screenshot:
Delphi-Quellcode:
Ich benutze Firefox (bei IE funktioniert es auch nicht) die Klasse heißt dort GeckoPluginWindow
function TReader.Screenshot(h: HWND):TBitMap;
var Rec: TRect; b:TBitmap; begin b := TBitmap.Create; GetWindowRect(h, Rec); b.Width := Rec.Right - Rec.Left; b.Height := Rec.Bottom - Rec.Top; BitBlt(b.Canvas.Handle, 0, 0, b.Width, b.Height, GetWindowDC(h), 0, 0, SRCCOPY); result := b; end; ich würde mich freuen, wenn mir jemand weiterhelfen kann. Gruß corema EDIT: Heute morgen habe ich herrausgefunden, dass das offensichtlich durch das attribut wmode im embed-tag veruracht wird: <embed src="myflash.swf" wmode="opaque" type="application/x-shockwave-flash"> Ist dieses Attribut enhalten, erhalte ich KEIN Handle (Ansonsten schon). Bei facebook bekam ich zwar ein Handle, doch dies war nicht das von der Anwenung, die ich haben wollte, sondern von einer anderen. |
AW: Screenshot von Flashanwendung auf Facebook
Woher kommt, bzw. wie ermittelst du das zu übergebende HWND?
|
AW: Screenshot von Flashanwendung auf Facebook
Liste der Anhänge anzeigen (Anzahl: 1)
Das Hwnds werden in ein TTreeView eingetragen. von Dort aus kann ich mit einem Dbl-Klick auf den eintrag ein Screenshot machen.
EnumChildWindows und EnumTopLevelWindows stammen aus der angehängten Unit. (In GetWindows sind Zeilen enthalten, die den Screenshot automatisieren. Die habe ich zur besseren übersicht rausgenommen)
Delphi-Quellcode:
procedure TReader.GetWindows(H:hwnd = 0; node : TTreeNode = nil);
var wlist : TWindowList; j,i:integer; PNode : TTreeNode; PHwnd : Hwnd; sclass : string; screen : TBitMap; begin wlist := TWindowList.Create; // Objekt erzeugen try wlist.AddClassname := True; wlist.ShowUnvisibleWindows := False; if(node = nil) then begin wlist.EnumTopLevelWindows; end else wlist.EnumChildWindows(h); for I := 0 to (wlist.count)- 1 do begin PHwnd := GetParent(wlist.Handles[i]); if(PHwnd <> h) then continue; if(node = nil) then PNode := TReeWInd.Items.addFirst(nil,inttostr(wlist.handles[i])+':'+wlist[i]) else PNode := TreeWind.Items.AddChild(Node, inttostr(wlist.handles[i])+':'+wlist[i]); GetWindows(wlist.Handles[i],PNode); end; finally wlist.free; end; end; procedure TReader.TreeWindDblClick(Sender: TObject); var txt:string; i:integer; sc : TBitMap; begin txt := ''; for i:= 1 to length(TreeWind.Selected.Text) do begin if(TreeWind.Selected.Text[i] = ':') then break; txt := txt+TreeWind.Selected.Text[i]; end; if(txt <> '') then begin sc := TBitMap.Create; sc := screenshot(strtoint(txt)); sc.SaveToFile('asd.bmp'); image1.Picture.Bitmap := sc; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz