Einzelnen Beitrag anzeigen

corema

Registriert seit: 3. Feb 2009
2 Beiträge
 
#3

AW: Screenshot von Flashanwendung auf Facebook

  Alt 5. Feb 2012, 08:14
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;
Angehängte Dateien
Dateityp: pas EnumWindowUtil.pas (3,1 KB, 3x aufgerufen)

Geändert von corema ( 5. Feb 2012 um 08:19 Uhr)
  Mit Zitat antworten Zitat