Hallo MaxChri.
Ich hoffe, ich habe dich richtig verstanden... Wenn nicht, antworte mir einfach. :)
Das mit einer Text-Datei zu machen, ist natürlich eine Möglichkeit, aber ich bevorzuge da lieber die INI-Datei. Wie dass geht, zeige ich dir unter dem strich unten.
Dein Anfang ist schon mal gut, aber direkt in der ersten Zeile ist ein Denkfehler. Wenn du die Datei löscht, dann kann man auch nicht mehr die Werte auslesen. Somit musst du dich erst um das auslesen kümmern. Hier kommt aber noch eine Schwierigkeit hinzu. Woran erkennst du, dass es sich bei der Zahl um die Höhe oder die Weite handelt. Ich habe das Script mal schreiben lassen und diese Zahl stand nachher in meiner Datei: "1366768" Na, welche Auflösung habe ich den?
Wir brauchen also irgendetwas, womit wir unterscheiden können, was was ist. Ich verwende jetzt in diesem Beispiel ein Trennzeichen, dass ich jetzt einfach mal auf ein Leerzeichen festsetze. Die erste Zahl ist also die Weite, danach kommt ein Leerzeichen zur Trennung und zum Schluss kommt die Höhe.
Jetzt, wo wir die Theorie erarbeitet haben, können wir ans Scripten gehen:
$PFAD = "Configuration\resolution.txt"
If FileExists ($PFAD) Then
$raw = FileRead($PFAD)
Wenn diese Datei existiert, dann soll alles, was in der Datei steht in die Variable $raw gespeichert werden. Die Variable $PFAD ist nur dazu da, dass ich den Namen der Datei nicht immer ausschreiben muss. :D
Jetzt unterscheiden wir zwischen Breite und Höhe. Wir gehen einfach hin und Trennen den Text anhand des Trennzeichens.
$werte = StringSplit($raw," ")
Wir erhalten jetzt einen Array, wo alles vor dem Leerzeichen in $werte[1] steht und alles nach dem Leerzeichen in $werte[2] steht. Der Übersicht halber nenne ich diese Variablen noch um.
$width = $werte[1]
$height = $werte[2]
Dieses sind jetzt wieder ganz normale Variablen, die wir wie gewohnt verwenden können.
Information am Rande: Wenn wir "Höhe Leerzeichen Breite Leerzeichen Tiefe" in die Datei schreiben würden und dann die Funktion StringSplit ausführen würden, hätten wir zusätzlich noch $werte[3] für die Tiefe
Jetzt wo wir die Werte haben, können wir auch die Größe verändern. Als Beispiel könnte dass so aussehen:
If MsgBox(4,"Größe","Möchtest du die größe ändern?" & @CRLF & "Neue Größe: " & $width & "x" & $height) = 6 Then
;Größe Ändern - Kannst du hoffentlich selber
Else
MsgBox(48,"Größe","Größe wurde nicht geändert" & @CRLF & "Neue Größe wird gespeichert...")
EndIf
Wenn wir sie jetzt geändert haben, können wir natürlich auch einfach die die Neue Größe einspeichern. Wenn sie nicht geändert wurde, gibt es entweder diese Datei nicht oder es soll die Aktuelle Größe gespeichert werden. In jedem Falle wird aber die momentane Größe gespeichert.
$resolution = @DesktopWidth & " " & @DesktopHeight
If not FileExists($PFAD) Then _FileCreate($PFAD)
$file = FileOpen($PFAD,2)
Wenn die Datei noch nicht existiert, dann soll er sie erstellen. Dadurch, dass ich in FileOpen eine 2 ergänzt habe, lösche ich alles, was in der Datei vorher stand.
Jetzt noch schnell die neuen Werte eingetragen und fertig.
FileWrite($file, $resolution)
FileClose($file)
Zur Benutzung: Einmal starten und es passiert erst mal nichts. Es wird dann aber die Größe aufgezeichnet und gespeichert. Noch einmal starten und es kommt ein Fenster von wegen Größe ändern. Klickst du auf Ja, wird die Größe geändert (bitte noch ergänzen), klickst du auf nein, wird die aktuelle Größe fürs nächste mal gespeichert.
Und jetzt eben noch das ganze Script:
#include <File.au3>
$PFAD = "Configuration\resolution.txt"
If FileExists($PFAD) Then
$raw = FileRead($PFAD)
$werte = StringSplit($raw, " ")
$width = $werte[1]
$height = $werte[2]
If MsgBox(4, "Größe", "Möchtest du die Größe ändern?" & @CRLF & "Neue Größe: " & $width & "x" & $height) = 6 Then
;Größe Ändern
Else
MsgBox(48, "Größe", "Größe wurde nicht geändert" & @CRLF & "Neue Größe wird gespeichert...")
EndIf
EndIf
$resolution = @DesktopWidth & " " & @DesktopHeight
If Not FileExists($PFAD) Then _FileCreate($PFAD)
$file = FileOpen($PFAD, 2)
FileWrite($file, $resolution)
FileClose($file)
Meine Variante für ein ähnliches Script wären INI-Dateien. AutoIT bietet relativ gute INI-Funktionen an, sodass man selber nicht viel Scripten muss.
Eine INI ist folgend aufgebaut:
[Ueberschrift]
wertname=wert
wertname2=wert
[Ueberschrift2]
wertname=wert
wertname2=wert
wertname3=wert
Und so weiter und sofort. Die Funktionen, die wir jetzt verwenden, sind recht simpel:
IniRead ( Pfad , Überschrift , wertname , notfallwert )
Der Notfallwert wird dazu verwendet, wenn irgendetwas schief geht. Wenn die Datei zum Beispiel nicht existiert oder der Wert aus irgendeinem Grund fehlt, wird der Notfallwert zurückgegeben.
$PFAD = "Configuration\resolution.ini"
$width = IniRead($PFAD,"Grosse","width", @DesktopWidth)
$height= IniRead($PFAD,"Grosse","height",@DesktopHeight)
Es geht in einer Antwort weiter. Habe zu wenig Zeichen....