» Poradna » Zpět na dotaz

Delphi - canvas (printscreen z prohlizece chrome)

Ladislav  |  2. 10. 2019 21:40:05  |  Odpovědí: 2

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;

Jméno:
 

E-mail (nepovinné, adresa bude v zabezpečené podobě zobrazena u přezdívky):

:-D :-)) :-) ;-) :-P :-| :-/ :-( 3-[ :-O B-]

Pravidla diskuzí v Poradně webu Živě.cz

Zasláním příspěvku do Poradny souhlasíte s těmito pravidly:

  • Podmínky užívání služby informační společnosti
  • Informace o zpracování osobních údajů
  • Příspěvky se musí týkat tématu otázky.
  • Příspěvky nesmí obsahovat vulgární výrazy a slovní útoky na jiné osoby. Příspěvky nesmí poškozovat web Živě.cz ani jeho provozovatele.
  • Je zakázáno vkládat do příspěvků odkazy na stránky nabízející obsah porušující autorská a jiná práva.
  • Příspěvky nelze využívat k propagaci.
  • Příspěvky, které porušují pravidla diskuzí, budou odstraněny. Případně budou upraveny tak, aby neporušovaly pravidla diskuzí. V textu bude následně uvedeno, že příspěvky byly ze strany moderátorů upraveny.
  • Právo moderovat Poradnu mají pouze zástupci vybraní redakcí Živě.cz. Základní kontrola příspěvku probíhá ještě před jeho zveřejněním.
  • Živě.cz je soukromý web a provozovatel má při řešení sporů, které se týkají příspěvků v Poradně, vždy konečné slovo.

Kdy vám můžeme smazat příspěvek?

  • Když budete vulgární.
  • Když budete slovně útočit na ostatní.
  • Když se nebudete držet tématu dotazu.
  • Když budete poradnu zneužívat pro reklamu.
  • Když záměrně zneužijete cizí přezdívku.
  • Když budete porušovat zákony.
  • A když budete na takové příspěvky reagovat, protože se vždy mažou včetně odpovědí ve stromu.