_WinAPI_GetOpenFileName
Создает диалоговое окно "Открыть", которое позволяет пользователю указать диск, каталог и имя файла или несколько файлов для открытия
#include <WinAPI.au3>
_WinAPI_GetOpenFileName([$sTitle = "" [, $sFilter = "All files (*.*)" [, $sInitalDir = "." [, $sDefaultFile = "" [, $sDefaultExt = "" [, $iFilterIndex = 1 [, $iFlags = 0 [, $iFlagsEx = 0 [, $hwndOwner = 0]]]]]]]]])
Параметры
$sTitle | [необязательный] Заголовок диалогового окна |
$sFilter |
[необязательный] Набор фильтров, каждый из которых состоит из двух элементов, например "Все файлы (*.*)|Текстовые файлы (*.txt)|Аудио файлы (*.mp3;*.wav;*.wma)" Первый элемент в каждом фильтре описывает фильтр, например "Текстовые файлы" Второй элемент фильтра указывает маску файла, например "*.TXT" Чтобы указать множество масок в одном фильтре, перечисляйте их используя разделитель ";" (точка с запятой), например "*.TXT;*.DOC;*.BAK" Маска может быть комбинацией допустимых символов в имени файла и подстановочного знака звездочки (*) Не включайте пробелы в маску. |
$sInitalDir |
[необязательный] Строка (путь), задающая начальный каталог |
$sDefaultFile |
[необязательный] Имя файла по умолчанию, которое будет в поле ввода "Имя файла:" |
$sDefaultExt |
[необязательный] Строка содержащая расширение по умолчанию |
$iFilterIndex |
[необязательный] Номер фильтра в списке "Типы файлов:", который будет выбран. |
$iFlags | [необязательный] Смотрите значения параметра Flags в описании структуры $tagOPENFILENAME |
$iFlagsEx | [необязательный] Смотрите значения параметра FlagEx в описании структуры $tagOPENFILENAME |
$hwndOwner |
[необязательный] Дескриптор родительского окна, которому принадлежит окно. Это значение может быть любым допустимым дескриптором окна, или 0, если диалоговое окно не имеет родительского окна. |
Возвращаемое значение
Успех: | Возвращает массив следующего формата: |
$Array[0] - Количество строк | |
$Array[1] - Выбранный путь | |
$Array[2] - Выбранный файл | |
$Array[n] - Выбранный файл | |
Ошибка: | Возвращает массив с 1 элементом, равным 0 |
См. также
$tagOPENFILENAME, _WinAPI_GetSaveFileName, _WinAPI_CommDlgExtendedErrorСм. также
Искать GetOpenFileName в библиотеке MSDNПример
#include <StructureConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
Global $iMemo
_Example_Defaults()
_Example_ExplorerStyleMultiSelect()
_Example_OldStyle()
_Example_ExplorerStyleSinglSelect()
_Example_ExplorerStyle_NoPlaceBar()
Func _Example_Defaults()
Local $hGui, $btn_dialog, $aFile, $sError
; Создаёт GUI
$hGui = GUICreate("Использование по умолчанию", 500, 296)
$iMemo = GUICtrlCreateEdit("", 2, 32, 496, 226, $WS_HSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_dialog = GUICtrlCreateButton("Открыть", 215, 263, 70, 28)
GUISetState()
While 1
Switch GUIGetMsg()
Case $btn_dialog
$aFile = _WinAPI_GetOpenFileName() ; Использование по умолчанию
If $aFile[0] = 0 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, $btn_dialog, $aFile, $sError
; Создаёт GUI
$hGui = GUICreate("Стиль Проводника (множественный выбор)", 500, 296)
$iMemo = GUICtrlCreateEdit("", 2, 32, 496, 226, $WS_HSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_dialog = GUICtrlCreateButton("Открыть", 215, 263, 70, 28)
GUISetState()
While 1
Switch GUIGetMsg()
Case $btn_dialog
$aFile = _WinAPI_GetOpenFileName("Мой диалог открытия файла", _
"Текстовые файлы (*.txt;*.au3)", ".", @ScriptName, "", 1, _
BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER), 0, $hGui)
If $aFile[0] = 0 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, $btn_dialog, $aFile, $sError
; Создаёт GUI
$hGui = GUICreate("Старый стиль (множественный выбор)", 500, 296)
$iMemo = GUICtrlCreateEdit("", 2, 32, 496, 226, $WS_HSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_dialog = GUICtrlCreateButton("Открыть", 215, 263, 70, 28)
GUISetState()
While 1
Switch GUIGetMsg()
Case $btn_dialog
$aFile = _WinAPI_GetOpenFileName("Мой диалог открытия файла", _
"Текстовые файлы (*.txt)|AutoIt файлы (*.au3)", ".", @ScriptName, _
"", 2, $OFN_ALLOWMULTISELECT, 0, $hGui)
If $aFile[0] = 0 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_ExplorerStyleSinglSelect()
Local $hGui, $btn_dialog, $aFile, $sError
; Создаёт GUI
$hGui = GUICreate("Стиль Проводника (выбор только одного)", 500, 296)
$iMemo = GUICtrlCreateEdit("", 2, 32, 496, 226, $WS_HSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_dialog = GUICtrlCreateButton("Открыть", 215, 263, 70, 28)
GUISetState()
While 1
Switch GUIGetMsg()
Case $btn_dialog
$aFile = _WinAPI_GetOpenFileName("Мой диалог открытия файла", _
"Текстовые файлы (*.txt)|AutoIt файлы (*.au3)", ".", @ScriptName, _
"", 2, 0, 0, $hGui)
If $aFile[0] = 0 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_ExplorerStyleSinglSelect
Func _Example_ExplorerStyle_NoPlaceBar()
Local $hGui, $btn_dialog, $aFile, $sError
; Создаёт GUI
$hGui = GUICreate("Стиль Проводника (выбор только одного)", 500, 296)
$iMemo = GUICtrlCreateEdit("", 2, 32, 496, 226, $WS_HSCROLL)
GUICtrlSetFont($iMemo, 9, 400, 0, "Courier New")
$btn_dialog = GUICtrlCreateButton("Открыть", 215, 263, 70, 28)
GUISetState()
While 1
Switch GUIGetMsg()
Case $btn_dialog
$aFile = _WinAPI_GetOpenFileName("Мой диалог открытия файла", _
"Текстовые файлы (*.txt)|AutoIt файлы (*.au3)", ".", @ScriptName, _
"", 2, BitOR($OFN_ALLOWMULTISELECT, $OFN_EXPLORER), $OFN_EX_NOPLACESBAR, $hGui)
If $aFile[0] = 0 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
; Записывает строку в элемент для заметок
Func MemoWrite($sMessage)
GUICtrlSetData($iMemo, $sMessage & @CRLF, 1)
EndFunc ;==>MemoWrite