FileSelectFile

Zeigt ein Standarddialogfenster an, mit dem der Benutzer eine oder mehrere Dateien öffnen oder speichern kann.

FileSelectFile, AusgabeVar , Optionen, RootVerz\DateiName, Titel, Filter

Parameter

AusgabeVar

Name der Ausgabevariable, in der die vom Benutzer ausgewählten Dateinamen gespeichert werden sollen. Diese Variable wird leer gemacht, wenn der Benutzer das Dialogfenster abbricht (also keine Datei auswählen möchte).

Optionen

Wenn leer oder weggelassen, wird standardmäßig 0 verwendet, was der Angabe keiner der folgenden Optionen entspricht. Andernfalls geben Sie eine Nummer oder einen der folgenden Buchstaben (optional gefolgt von einer Nummer) an. Zum Beispiel sind M, 1 und M1 gültig (aber nicht äquivalent).

M: Mehrfachauswahl. Geben Sie den Buchstaben M an, um dem Benutzer die Möglichkeit zu bieten, mehr als eine Datei auszuwählen, z.B. mit UMSCHALT- oder STRG-modifizierten Klicks. Das Beispiel ganz unten zeigt, wie einzelne Dateien extrahiert werden können.

S: Speichern-Dialogfenster. Geben Sie den Buchstaben S an, um die Öffnen-Schaltfläche mit einer Speichern-Schaltfläche zu ersetzen.

Die folgenden Nummern können verwendet werden. Um mehrere von ihnen in Kraft zu setzen, addieren Sie diese. Um zum Beispiel 1 und 2 zu verwenden, geben Sie 3 an.

1: Datei muss existieren
2: Pfad muss existieren
8: Nachfragen, ob eine neue Datei erstellt werden soll
16: Nachfragen, ob die Datei überschrieben werden soll
32 [v1.0.43.09+]: Verknüpfungen (LNK-Dateien) werden so ausgewählt, wie sie sind, anstatt in ihre Ziele aufgelöst zu werden. Diese Option verhindert auch die Navigation zu einem Ordner über eine Ordnerverknüpfung.

Beachten Sie, dass die 16-Option (nachfragen, ob die Datei überschrieben werden soll) nur vom Speichern-Dialogfenster unterstützt wird. Wenn Sie diese Option also ohne die 8-Option (nachfragen, ob eine neue Datei erstellt werden soll) angeben, wird auch die S-Option wirksam. Entsprechend hat die 8-Option keine Wirkung, wenn die S-Option vorhanden ist. Wenn Sie die Zahl 24 angeben, werden alle vom Dialogfenster unterstützten Nachfragen aktiviert.

RootVerz\DateiName

Wenn leer oder weggelassen, wird standardmäßig ein Startverzeichnis verwendet, das vom aktuellen Betriebssystem abhängt (in der Regel das Verzeichnis, das der Benutzer zuletzt mit FileSelectFile ausgewählt hat). Andernfalls geben Sie eine oder beide der folgenden Komponenten an:

RootVerz: Das Root- bzw. Startverzeichnis. Wenn kein absoluter Pfad angegeben ist, wird das Verzeichnis als Unterordner des A_WorkingDir-Verzeichnisses vermutet. [v1.0.43.10+]: In Windows XP/2003 und niedriger kann auch ein CLSID-Wert wie ::{20D04FE0-3AEA-1069-A2D8-08002B30309D} (Dieser PC; ehemals Arbeitsplatz oder Computer) angegeben werden - in diesem Fall sollte jedes Unterverzeichnis nach dem CLSID-Wert mit einem umgekehrten Schrägstrich enden (andernfalls wird der Text nach dem letzten umgekehrten Schrägstrich als Dateiname interpretiert).

DateiName: Ein Dateiname, der standardmäßig im Eingabefeld des Dialogfensters angezeigt werden soll. Es wird nur der Dateiname angezeigt (also ohne Pfad). Für die korrekte Darstellung des Dialogfensters muss sichergestellt werden, dass keine illegalen Zeichen enthalten sind (wie z.B. /<|:").

Beispiele:

C:\Meine Bilder\Standard-Bildname.gif  ; Sowohl RootVerz als auch DateiName vorhanden.
C:\Meine Bilder  ; Nur RootVerz existiert.
Meine Bilder  ; Nur RootVerz existiert und ist relativ zum aktuellen Arbeitsverzeichnis.
Meine Datei  ; Nur DateiName existiert (aber wenn "Meine Datei" als Ordner existiert, wird es als RootVerz vermutet).
Titel

Wenn leer oder weggelassen, wird standardmäßig Select File - %A_ScriptName% (der Name des aktuellen Skripts) verwendet. Andernfalls geben Sie den Titel des Dateiauswahlfensters an.

Filter

Wenn leer oder weggelassen, wird das Dialogfenster alle Dateitypen anzeigen und die Optionen "All Files (*.*)" und "Text Documents (*.txt)" in der aufklappbaren Dateityp-Auswahlliste anbieten.

Andernfalls geben Sie eine Zeichenkette an, um zu bestimmen, welche Dateitypen im Dialogfenster angezeigt werden, z.B. Dokumente (*.txt). Um mehr als eine Dateiendung in den Filter einzufügen, trennen Sie diese durch Semikolons, z.B. Audio (*.wav; *.mp2; *.mp3). In diesem Fall bietet die aufklappbare Dateityp-Auswahlliste die angegebene Zeichenkette und "All Files (*.*)" als Optionen an.

Fehlerbehandlung

[v1.1.04+]: Dieser Befehl ist in der Lage, bei Misserfolg eine Ausnahme auszulösen. Weitere Informationen finden Sie unter Laufzeitfehler.

ErrorLevel wird auf 1 gesetzt, wenn der Benutzer das Dialogfenster geschlossen hat, ohne eine Datei ausgewählt zu haben (z.B. durch Drücken der Schaltfläche "Abbrechen"), oder wenn das Betriebssystem sich weigert, das Dialogfenster anzuzeigen (selten). Andernfalls wird es auf 0 gesetzt.

Bemerkungen

Ein typisches Dateiauswahlfenster sieht wie folgt aus:

FileSelectFile

Wenn der Benutzer nichts ausgewählt hat (z.B. weil er ABBRECHEN gedrückt hat), wird AusgabeVar leer gemacht.

Wenn die Mehrfachauswahl nicht aktiv ist, wird AusgabeVar auf den vollständigen Pfad und Namen der einzelnen Datei gesetzt, die der Benutzer ausgewählt hat.

Wenn die M-Option (Mehrfachauswahl) aktiv ist, wird AusgabeVar auf eine Liste von Elementen gesetzt, die alle außer dem letzten mit einem Zeilenvorschubzeichen (`n) enden. Das erste Element in der Liste ist der Pfad, in dem sich alle ausgewählten Dateien befinden (dieser Pfad endet nur mit einem umgekehrten Schrägstrich, wenn es sich um ein Stammverzeichnis wie C:\ handelt). Die anderen Elemente sind die ausgewählten Dateien (ohne Pfad). Zum Beispiel:

C:\Meine Dokumente\Neuer Ordner [dieser Pfad gilt für alle folgenden Dateien]
test1.txt [das sind die reinen Dateinamen: keine Pfadangabe]
test2.txt
... etc.

Das Beispiel ganz unten zeigt, wie diese Dateien einzeln extrahiert werden können.

Bei aktivierter Mehrfachauswahl ist die Gesamtlänge aller ausgewählten Dateinamen auf 64 KB begrenzt. Dieses Limit reicht in der Regel für mehrere tausend Dateien aus. Sollte dieser Wert dennoch überschritten werden, wird AusgabeVar leer gemacht.

Ein GUI-Fenster kann via Gui +OwnDialogs ein modales Dateiauswahlfenster anzeigen. Ein modales Dialogfenster hindert den Benutzer daran, mit dem GUI-Fenster zu interagieren, bis er das Dialogfenster wieder schließt.

[v1.0.25.06+]: Die Mehrfachauswahloption "4" ist veraltet. Allerdings wird diese Option aus Kompatibilitätsgründen mit älteren Skripten weiterhin wie vorgesehen funktionieren. Konkret: Wenn der Benutzer nur eine Datei auswählt, wird AusgabeVar auf den vollständigen Pfad und Namen dieser Datei gesetzt, gefolgt von einem Zeilenvorschubzeichen (`n). Wenn der Benutzer mehr als eine Datei auswählt, wird die Ausgabevariable eine Liste enthalten, wie oben bei der M-Option beschrieben, außer dass das letzte Element ebenfalls mit einem Zeilenvorschub (`n) endet.

FileSelectFolder, MsgBox, InputBox, ToolTip, GUI, CLSID-Liste, parsende Schleife, SplitPath

Das Betriebssystem stellt außerdem Standarddialogfenster bereit, die der Benutzer zum Auswählen einer Schriftart, einer Farbe oder eines Symbols verwenden kann. Solche Dialogfenster können via DllCall() angezeigt werden, wie auf GitHub gezeigt.

Beispiele

Ermöglicht dem Benutzer die Auswahl einer existierenden TXT- oder DOC-Datei.

FileSelectFile, AusgewählteDatei, 3, , Datei öffnen, Text-Dokumente (*.txt; *.doc)
if (AusgewählteDatei = "")
    MsgBox, Der Benutzer hat nichts ausgewählt.
else
    MsgBox, Der Benutzer hat folgendes ausgewählt:`n%AusgewählteDatei%

Ein CLSID-Beispiel. Ermöglicht dem Benutzer die Auswahl einer Datei im Papierkorb. Beachten Sie, dass dieses Beispiel nur in Windows XP/2003 und niedriger funktioniert.

FileSelectFile, AusgabeVar,, ::{645FF040-5081-101B-9F08-00AA002F954E}  ; Papierkorb.

Ermöglicht dem Benutzer die Auswahl mehrerer existierender Dateien.

FileSelectFile, Dateien, M3  ; M3 = Mehrfachauswahl existierender Dateien.
if (Dateien = "")
{
    MsgBox, Der Benutzer hat Abbrechen gedrückt.
    return
}
Loop, parse, Dateien, `n
{
    if (A_Index = 1)
        MsgBox, Die ausgewählten Dateien befinden sich alle in %A_LoopField%.
    else
    {
        MsgBox, 4, , Die nächste Datei ist %A_LoopField%.  Weiter?
        IfMsgBox, No, break
    }
}
return