Funktionreferenz


_WinAPI_GetOpenFileName

Beschreibung anzeigen in

Erzeugt ein "Öffnen-Dialog-Fenster", welches dem Benutzer das Laufwerk, Verzeichnis und den Namen einer oder mehrerer zu öffnenden Dateien bestimmen lässt

#include <WinAPIDlg.au3>
_WinAPI_GetOpenFileName ( [$sTitle = "" [, $sFilter = "All files (*.*)" [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hWndOwner = 0]]]]]]]]] )

Parameter

$sTitle [optional] String der in der Titelleiste des Dialogfensters platziert werden soll
$sFilter [optional] Paare von Filter-Strings (z.B. "Textdateien (*.txt)|Alle Dateien (*.*)")
Der erste String in jedem Filterpaar ist ein Anzeigetext der den Filter beschreibt (z.B. "Textdateien")
Der zweite String bestimmt das Filtermuster (z.B. "*.txt")
Um mehrere Filtermuster für nur einen Anzeigetext zu bestimmen, trennt man die Filtermuster mit einem Semikolon (z.B. "*.txt;*.doc;*.bak")
Ein Filtermuster kann eine Kombination gültiger Dateiendungen und dem Asterisk-Druckzeichen (*) für Wildcards darstellen.
Das Filtermuster darf keine Leerzeichen enthalten.
$sInitalDir [optional] String der das Ursprungsverzeichnis festlegen kann
$sDefaultFile [optional] Ein Dateiname der genutzt werden kann um das Dateinamen-Input-Control zu initialisieren
$sDefaultExt [optional] String der die standardmäßige Dateierweiterung enthält
$iFilterIndex [optional] Bestimmt den Index des aktuell gewählten Filters in der "Dateityp"-ComboBox
$iFlags [optional] Siehe Flags in der $tagOPENFILENAME Information
$iFlagsEx [optional] Siehe FlagEx in der $tagOPENFILENAME Information
$hWndOwner [optional] Handle zu dem Fenster welches das Dialogfenster besitzt. Dieses Mitglied kann irgendein gültiges Fensterhandle sein, oder 0 wenn das Dialogfenster keinen Besitzer hat.

Rückgabewert

Erfolg: Array mit dem folgenden Format:
[0] - Enthält die Anzahl der Strings
[1] - Enthält den gewählten Pfad
[2] - Enthält die gewählte Datei
[n] - Enthält die gewählte Datei
Fehler: Setzt das @error Flag auf ungleich null. Es ist _WinAPI_GetLastError() aufzurufen um erweiterte Fehlerinformationen zu erhalten.

Verwandte Funktionen

$tagOPENFILENAME, _WinAPI_CommDlgExtendedError, _WinAPI_GetSaveFileName

Siehe auch

Suche nach GetOpenFileName in der MSDN Bibliothek.

Beispiel

#include <GUIConstantsEx.au3>
#include <StructureConstants.au3>
#include <WinAPIDlg.au3>
#include <WindowsConstants.au3>

Global $g_idMemo

_Example_Defaults()
_Example_ExplorerStyleMultiSelect()
_Example_OldStyle()
_Example_ExplorerStyleSingleSelect()
_Example_ExplorerStyle_NoPlaceBar()

Func _Example_Defaults()
    Local $hGui, $id_Dialog, $aFile, $sError

    ; Erstellt eine GUI
    $hGui = GUICreate("GetOpenFileName (mit Standardeinstellungen)", 450, 296)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 446, 226, $WS_HSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $id_Dialog = GUICtrlCreateButton("Öffnen-Dialog", 180, 270, 90, 20)
    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $id_Dialog
                $aFile = _WinAPI_GetOpenFileName() ; Verwendet Standards
                If @error Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_Defaults

Func _Example_ExplorerStyleMultiSelect()
    Local $hGui, $id_Dialog, $aFile, $sError

    ; Erstellt eine GUI
    $hGui = GUICreate("GetOpenFileName im Explorer-Stil (Mehrfachauswahl)", 450, 296)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 446, 226, $WS_HSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $id_Dialog = GUICtrlCreateButton("Öffnen-Dialog", 180, 270, 90, 20)
    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $id_Dialog
                $aFile = _WinAPI_GetOpenFileName("Mein Datei-Öffnen-Dialog", _
                        "Textdatei (*.txt;*.au3)", ".", @ScriptName, "", 1, _
                        BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER), 0, $hGui)
                If @error Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_ExplorerStyleMultiSelect

Func _Example_OldStyle()
    Local $hGui, $id_Dialog, $aFile, $sError

    ; Erstellt eine GUI
    $hGui = GUICreate("GetOpenFileName im alten Stil (Mehrfachauswahl)", 450, 296)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 446, 226, $WS_HSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $id_Dialog = GUICtrlCreateButton("Öffnen-Dialog", 180, 270, 90, 20)
    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $id_Dialog
                $aFile = _WinAPI_GetOpenFileName("Mein Datei-Öffnen-Dialog", _
                        "Textdatei (*.txt)|AutoIt-Datei (*.au3)", ".", @ScriptName, _
                        "", 2, $OFN_ALLOWMULTISELECT, 0, $hGui)
                If @error Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_OldStyle

Func _Example_ExplorerStyleSingleSelect()
    Local $hGui, $id_Dialog, $aFile, $sError

    ; Erstellt eine GUI
    $hGui = GUICreate("GetOpenFileName im Explorer-Stil (Einfachauswahl)", 450, 296)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 446, 226, $WS_HSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $id_Dialog = GUICtrlCreateButton("Öffnen-Dialog", 180, 270, 90, 20)
    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $id_Dialog
                $aFile = _WinAPI_GetOpenFileName("Mein Datei-Öffnen-Dialog", _
                        "Textdatei (*.txt)|AutoIt-Datei (*.au3)", ".", @ScriptName, _
                        "", 2, 0, 0, $hGui)
                If @error Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_ExplorerStyleSingleSelect

Func _Example_ExplorerStyle_NoPlaceBar()
    Local $hGui, $id_Dialog, $aFile, $sError

    ; Erstellt eine GUI
    $hGui = GUICreate("GetOpenFileName im Explorer-Stil (ohne Favoriten)", 450, 296)
    $g_idMemo = GUICtrlCreateEdit("", 2, 32, 446, 226, $WS_HSCROLL)
    GUICtrlSetFont($g_idMemo, 9, 400, 0, "Courier New")
    $id_Dialog = GUICtrlCreateButton("Öffnen-Dialog", 180, 270, 90, 20)
    GUISetState(@SW_SHOW)

    While 1
        Switch GUIGetMsg()
            Case $id_Dialog
                $aFile = _WinAPI_GetOpenFileName("Mein Datei-Öffnen-Dialog", _
                        "Textdatei (*.txt)|AutoIt-Datei (*.au3)", ".", @ScriptName, _
                        "", 2, $OFN_EXPLORER, $OFN_EX_NOPLACESBAR, $hGui)
                If @error Then
                    $sError = _WinAPI_CommDlgExtendedError()
                    MemoWrite("CommDlgExtendedError (" & @error & "): " & $sError)
                Else
                    For $x = 1 To $aFile[0]
                        MemoWrite($aFile[$x])
                    Next
                EndIf
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    GUIDelete($hGui)
EndFunc   ;==>_Example_ExplorerStyle_NoPlaceBar

; Gibt eine Zeile im Memo-Fenster aus
Func MemoWrite($sMessage)
    GUICtrlSetData($g_idMemo, $sMessage & @CRLF, 1)
EndFunc   ;==>MemoWrite