Dobrý den,
nedaří se získat foto aktualního zobrazeni z prohlizece google chrome.
Výsledkem mého snazení je jen černé okno. Kde muže být chyba?
Na jiné aplikace toto funguje bezproblemu.
Postupuji takto:
procedure TForm17.Button3MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
pt: TPoint;
pom_retez,textokna: string;
n: DWord;
ctverec: TRect;
begin
pt:=mouse.CursorPos; //nastavuje mys
Handle:=WIndowFromPoint(pt); //ziskavam handle okna pod kurzorem
//--nazev okna z handle
SetLength(pom_retez,511); //nastavi string na 511 pismen
if IsWindow(handle) then n:=GetWindowText(handle,@pom_retez[1],510); //ziska text okna a asi ulozi do pameti
textokna:=copy(pom_retez,1,n); //zkopiruje cast retezce hodnotu 1-n
//--nazev okna z handle
form17.Caption:=textokna;
form17.VLE1.Enabled:=true;
//ziskam rozmer okna
ziskej_rozmer_okna;
vyfot_okno(handle); // vyfotim okno na které ukazuje handle
//vyfot_okno(GetDesktopWindow); // vyfotim okno na které ukazuje handle
end;
Procedure vyfot_okno(handle:hwnd);
var
ctverec_kopiruj,ctverec_cil: TRect;
Muj_Canavas: TCanvas;
begin
Muj_Canavas := TCanvas.Create; //vytvorim si svoje platno
if IsWindow(handle) then Muj_Canavas.Handle := GetWindowDC(handle); //nalepim svoje platno na aplikaci
if IsWindow(handle) then GetWindowRect(handle,ctverec_kopiruj); //souradnice polohy okna na monitoru
form2.Width:=ctverec_kopiruj.Right-ctverec_kopiruj.Left+strtoint(form17.Edit4.Text); //nastavim velikost pameti podle obrazku
form2.Height:=ctverec_kopiruj.bottom-ctverec_kopiruj.top+strtoint(form17.Edit5.Text); //nastavim
ctverec_cil.Left:=0;ctverec_cil.Top:=0;
ctverec_cil.Right:=form2.Width;form2.Height:=form2.Height;
// vyfotim obrazek
form2.Image1.Picture:=nil;
form2.Image1.Canvas.CopyRect(ctverec_cil, muj_canavas, ctverec_cil);
// form2.Image1_stin.Assign(Form2.Image1); //připřadim stínu stejne vlastnosti jako ma jednicka včetně obrazku a rozmeru.
form2.Image1_stin.Picture.Bitmap.Assign(Form2.Image1.Picture.Bitmap); //připřadim stínu stejne vlastnosti jako ma jednicka včetně obrazku a rozmeru.
form2.Visible:=true;
if IsWindow(handle) then ReleaseDC(handle, Muj_Canavas.Handle); //nevim
Muj_Canavas.Free; //smazu svuj canavas
end;