AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Screenshot und Skalierung

Ein Thema von tofse01 · begonnen am 20. Nov 2024 · letzter Beitrag vom 25. Nov 2024
Antwort Antwort
supermulti81

Registriert seit: 13. Okt 2023
34 Beiträge
 
#1

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:23
Moin,
probiere bzw. ersetze mal:
GetWindowRect(hWindow, R);

durch

GetClientRect(hWindow, R);
Width := R.Width;
Height := R.Height;
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#2

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:25
Danke, ich brauche aber die Koordinaten von dem Programm, und die von dir genannte GetClientRect hat keine Parameter
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.556 Beiträge
 
Delphi 12 Athens
 
#3

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:34
Doch, hat sie, wenn du die Richtige benutzt.
* Self.GetClientRect von der Form, bzw. TCustomForm
* Windows.GetClientRect aus der Windows.pas, bzw. Winapi.Windows.pas

Die machen aber natürlich beide genau das Gleiche.
R := DelphiKomponente.GetClientRect; oder GetClientRect(HandleDerKomponente, R);


Dein Programm ist skaliert, also bekommt es auch die Koordinaten skaliert, aus seiner eigenen verbogenen Sichtweise.
Wäre dein Programm für HighDPI ausgelegt, also es dem Windoes sagt "ich kann das", dann wird es nicht skalliert und bekommt auch alle Canvas und Koordinaten in unverfäschter Form.

Genauso wird dein Programm in aktuellen Windowsen virtualisiert, also wenn dein Programm fragt, welche Windowsversions das ist, bekommt es meistens XP oder Vista gesagt, weil sich dein Programm nicht als kompatibel mit der dem Windows geoutet hat.
https://www.delphipraxis.net/216149-...skmanager.html
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (20. Nov 2024 um 10:22 Uhr)
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#4

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:43
Verstehe ich leider nicht
Ich will die Koordinaten von einem externen Programm, das rein gar nichts mit dem Delphi Programm zu tun hat. Als Beispiel verwende ich den "Windows Rechner", hierzu suche ich mir den Handler raus

Verwende ich

GetWindowRect(Prog, t); Bekomme ich als Ergebnis 351 x 284 (links oben) raus

Verwende ich das hier

Windows.GetClientRect(Prog,t); Bekomme ich als Ergebnis 0 x 0 raus

"Prog" ist hier der Handler von dem "Win Rechner"
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#5

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:54
Es liegt definitiv an den Win Einstellungen, verwende ich hier 100% (Was ich aber im Produktiveinsatz nicht machen kann) dann bekomme ich das gewünschte Ergebnis, siehe Anhang
Angehängte Grafiken
Dateityp: png 2024-11-20 10_51_29-Einstellungen.png (8,5 KB, 14x aufgerufen)
Dateityp: png 2024-11-20 10_52_25-.png (83,5 KB, 16x aufgerufen)
  Mit Zitat antworten Zitat
supermulti81

Registriert seit: 13. Okt 2023
34 Beiträge
 
#6

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:58
Oben links brauchst du doch gar nicht.

du holst doch das Bild über das Handle und das startet bei x=0 und y=0.
und GetClientRect(hWindow, R);
gibt dir ein Rect zurück. Da verwendest du Width und Height.

Width := R.Width;
Height := R.Height;

und bitte noch setzen:
Left := 0;
Top := 0;

dann klappt auch dein BitBlt.

BitBlt(bm.Canvas.Handle,
0,
0,
Width,
Height,
Dc,
Left,
Top,
SRCCOPY);
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#7

AW: Screenshot und Skalierung

  Alt 20. Nov 2024, 09:59
Hier ist es noch einmal erklärt: https://stackoverflow.com/questions/...xternal-window
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
tofse01

Registriert seit: 20. Nov 2024
8 Beiträge
 
#8

AW: Screenshot und Skalierung

  Alt 25. Nov 2024, 08:37
Hallo
ich komme erst jetzt wieder dazu, mich damit zu beschäftigen, deshalb erst heute meine Rückmeldung
Ich stehe total auf dem Schlauch, auch in Bezug auf diese Antwort. Wieso startet das bei 0,0 ?

Ich habe nochmal ein Bild angehängt worum es mir geht.
Es gibt eine beliebige Anwendung, Position der Anwendung ist variabel. Ich benötige einen Screenshot dieser Anwendung. Handle der Anwendung hab ich.

Ich erstelle also einen Screenshot vom kompletten Desktop, wie im Anhang zu sehen. Über das Handle bekomme ich die Koordinaten des Fenster der anderen Anwendung, hier im Beispiel 45 x 160. Das ist ja nicht 0 x 0
Die anderen Koordinaten habe ich ja auch. Ich muss also aus dem kompletten Screenshot den rot markierten Bereich rauskopieren. Wenn ich die Skalierung auf 100% hab, funktioniert es, wenn die Skalierung windowsseitig bei 125% ist, ist alles verschoben und die Maße passen nicht



Oben links brauchst du doch gar nicht.

du holst doch das Bild über das Handle und das startet bei x=0 und y=0.
und GetClientRect(hWindow, R);
gibt dir ein Rect zurück. Da verwendest du Width und Height.

Width := R.Width;
Height := R.Height;

und bitte noch setzen:
Left := 0;
Top := 0;

dann klappt auch dein BitBlt.

BitBlt(bm.Canvas.Handle,
0,
0,
Width,
Height,
Dc,
Left,
Top,
SRCCOPY);
Angehängte Grafiken
Dateityp: jpg Unbenannt.jpg (31,8 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:05 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