Ah ok. Wieder was gelernt. Verstanden.
Ich werde in Zukunft nach portablen Programmen suchen, die man über CLI ansteuern kann.
Ich nutze übrigens Win10.
Danke dir.
Ah ok. Wieder was gelernt. Verstanden.
Ich werde in Zukunft nach portablen Programmen suchen, die man über CLI ansteuern kann.
Ich nutze übrigens Win10.
Danke dir.
Danke dir.
Habe die Möglichkeit gefunden, im Explorer über den send("^b") und send("p") die Datei zu drucken und da den PDF-Drucker gewählt.
Hat gut funktioniert.
Viele Grüße
Die GUI Erstellung werde ich mir demnächst mal genauer ansehen.
Gibt es eigentlich auch die Möglichkeit einen Screenshot als .pdf zu speichern und nicht nur als .jpg?
Also ihr seid ja krass drauf.
Habe das von Musashi mit der Registryabfrage schon eingebaut.
Habe auch zwei Bildschirme einen Großen und einen Kleinen.
Werde mal versuchen dein Script mit einzubauen, Kanashius.
Habe mittlerweile auch noch eine Abfrage eingebaut, in welchem Ordner der Screenshot gespeichert werden soll.
AutoIT kann ja wirklich sehr viel.
Bin begeistert. Und eure Unterstützung ist der Hammer.
Vielen Dank
Super vielen Dank für die ausführliche Erklärung.
Es funktioniert.
Richtig ist hier Round($g_iUserAppliedDPI/$g_fDPIDefault, 2).
Werde in Zukunft mehr mit AutoIT machen. Ist richtig cool.
Vielen Dank
Gruß
HoT
Ah ok,
du liest also in Zeile 8 die Usereinstellung aus und speicherst sie in die Variable g_iUserAppliedDPI.
Zeile 12 ist eine Beispielkoordinate
Aber was passiert in Zeile 14?
Die Koordinaten mit dem Streckungsfaktor 96/g_iUserAppliedDPI multipliziert.
Aber was macht ConsoleWrite? (
The data you wish to output. This may either be text or binary. |
) ????
Als Test die Ausgabe in der Console?
Gruß
HoT
Aber muss es in Zeile 9 nicht Round($g_iUserAppliedDPI/$g_fDPIDefault, 2)
heißen??
Hallo,
zur Vervollständigung.
Da ich bei der Bildschirmskalierung die 150% eingestellt habe, muss ich die Koordinaten mit 1,5 multiplizieren, dann stimmt es auch.
Es handelt sich also um eine zentrische Streckung am Ursprung (0|0) sprich obere linke Ecke.
Darum hat der Bildausschnitt, je weiter rechts er war immer weniger zu den angeklickten Koordinaten gepasst.
Vielen Dank für Eure Hilfe
Jetzt suche ich mir ein neues Projekt. AutoIT macht aber richtig Spaß.
Viele Grüße
HoT
Hallo miteinander,
ich habe den Fehler gefunden.
Nachdem ich einen 32Zoll Monitor habe, habe ich die Windows Anzeigeeinstellungen bei Skalierung und Anordnung auf 150% stehen.
Als ich sie auf 100% eingestellt habe hat alles so funktioniert, wie es sollte.
Trotzdem komisch, oder?
Gibt es eine Möglichkeit trotz dieser Skalierung den richtigen Screenshot zu bekommen?
Ich probiere mal die Skalierung auf die Koordinaten herunterzurechnen.
Vielen Dank aber an alle, die versucht haben zu helfen.
Gruß
HoT
Also wenn ich den Screenshot an das Programm Greenshot übergebe mit (senden der Umschalt und print-Tasten) um dort den Screenshot des Bildschirmsbereichs zu machen, dann stimmt es und ist so wie es sein soll.
Ich habe nur das Problem mit dem
_ScreenCapture_Capture("D:\Temp\AutoIT\Screenshots\" & $i & ".jpg", $xol, $yol, $xur, $yur)
Befehl. Komisch.
Wollte es gern eben nur mit Windows Bordmitteln realisieren, ohne Zusatzprogramme.
Bei einem Test an einer anderen Stelle war die Koordinatendifferenz noch krasser:
1 Programm: 921 , 77, 2127, 1335
2. Bild : 1399, 100, 1437, 1335
Das verstehe ich nicht. Wenn es wenigstens eine gleichmäßige Abweichung wäre.
Hallo BugFix,
sorry.
Also ich habe jetzt nochmal einen Test gemacht.
Die Koordinaten, die das Script aus Post #3 ausgibt, stimmt mit den Koordinaten, die ich über das Tool auslese überein.
Diese waren im jetzigen Test: 349,215,1175,1021
Mit dem AutoIT Info tool auch.
Der Screenshot wird aber versetzt aufgezeichnet.
Mit den ungefähren Koordinaten von : 253,168,871,823
Ich hoffe das sind alle Daten die du brauchst.
Vielen Dank für deine Hilfe
HoT
Wenn ich dies mit verschiedenen Bildschirmausschnitte teste, kann keine Gesetzmäßigkeit zwischen den Abweichungen der geklickten Grenzen mit den aufgenommenen Bildgrenzen festgestellt werden. Funktioniert das Skript bei dir? Stimmen die abgefragten Begrenzungen mit dem Bildausschnitt überein?
Danke für die Info,
aber es steht bei mir auf screen. Und das Skript holt sich ja auch die Koordinaten vom screen, oder. Aber wie im Beispiel zu sehen ist, sind die Koordinaten verschoben.
Ah super,
jetzt klappt es. Danke dir Kanashius.
Dann war ich ja gar nicht so falsch.
Ein kleines Problem habe ich noch. Der Bildschirmbereich stimmt beim Foto nicht.
Auch wenn ich mit dem Tool (AutoIt Window Info) die Koordinaten bestimme und fest (also nicht über die Abfrage Variable) in den Befehl integriere, stimmt der Bildschirmbereich nicht. Woran könnte dies liegen?
_ScreenCapture_Capture("D:\Temp\AutoIT\Screenshots\" & $i & ".jpg", 200, 200, 1200, 1600)
Vielen Dank im Voraus.
HoT
Siehe Beispiel
Hallo Ich bin neu hier und wollte zum Lernen von AutoIT ein kleines Programm schreiben, damit ich einen Screenshot eines Bildbereiches machen kann.
Aber ich scheitere leider schon hier.
Ich möchte die linke obere Ecke des Bildbereiches abfragen und bei Tastendruck (IsPressed) die x und y Koordinate der Mausposition in zwei Variablen abspeichern.
Das gleiche dann in der rechten unteren Ecke des Bildbereichs.
Aber ich habe Probleme mit der While schleife.
Wäre um Hilfe dankbar.
Hier mein momentaner Code:
#include <screenCapture.au3>
#include <Misc.au3>
Local $userdll = DllOpen("user32.dll")
;Screenbereichsvariablen festlegen
Local $lo
Local $ru
Local $yol
Local $xur
Local $yur
Local $done=0
While $done = 0
MsgBox(0,"Bildschirmbereich festlegen","Bewegen sie die Mouse in die obere linke Ecke des aufzunehmenden Bereichs.")
if _IsPressed("01", $userdll) Then
$lo = MouseGetPos()
$xol=$lo[0]
$yol=$lo[1]
$done=1
EndIf
WEnd
While sleep(20)
MsgBox(0,"Bildschirmbereich festlegen","Bewegen sie die Mouse in die untere rechte Ecke des aufzunehmenden Bereichs.")
if _IsPressed("01", $userdll) Then
$ru = MouseGetPos()
$xur=$lo[0]
$yur=$lo[1]
EndIf
ExitLoop
WEnd
DllClose($userdll)
_ScreenCapture_Capture("D:\Temp\AutoIT\Screenshots\Bild.jpg", $xol, $yol, $xur, $yur)
sleep(500)
Func Mposition()
$aPos = MouseGetPos()
EndFunc
Func _Position()
MsgBox(0, "Mouse x, y:", $aPos[0] & ", " & $aPos[1])
EndFunc
Alles anzeigen
Vielen Dank für eure Hilfe im Voraus.