Функция FileSelectFolder

         Описание функции


FileSelectFolder

Отображает диалог выбора папки.

FileSelectFolder ( "dialog text", "root dir" [, flag = 0 [, "initial dir" [, hwnd ]]] )

Параметры

dialog text Текст приветствия в диалоге.
root dir Путь к текущей корневой папке. Это ограничивает выбор внутри неё. Используйте пустую строку "" чтобы установить Рабочий стол в качестве корневой папки.
flag [необязательный]
  1 = Показывать кнопку создания папки (требуется IE6.0 или старше)
  2 = Использовать новый стиль диалога (требуется IE5.0 или старше)
  4 = Показывать поле редактирования (для ввода пути)
initial dir [необязательный] Полный путь к папке, которая будет выбрана/выделена при отображении диалога (при условии, что она существует внутри указанной корневой папки). По умолчанию нет ("").
hwnd [необязательный] Дескриптор окна для использования его в качестве родительского по отношению к данному диалогу.

Возвращаемое значение

Успех:Возвращает полный путь к выбранной папке.
Ошибка:Возвращает "" (пустую строку) и устанавливает значение @error равным 1, если пользователь нажал кнопку "Отмена" или закрыл окно.

Примечания

Если указан путь к папке в параметре initial dir, но она не существует в пределах указанной корневой папки, то будет выделенной корневая папка.
Если корневая папка не существует, то ей станет Рабочий стол.
Установленный flag 1 = "Кнопка для создания каталога" может потребовать Windows XP с IE6 и старше для работоспособности.
Специальные каталоги Windows (такие как "Мои Документы") могут быть заданы корневыми при использовании правильного CLSID, указанного в приложении.
UNC пути не поддерживаются. Если вы думаете, что пользователи могут выбрать файлы с UNC путем, то сначала путь должен быть подключен как диск.

См. также

FileSaveDialog, FileOpenDialog

Пример

#include <GUIConstantsEx.au3>
#include <ButtonConstants.au3>

; Пример 1
$hGui = GUICreate('Функция FileSelectFolder')
$iButton = GUICtrlCreateButton('-', 10, 10, 21, 21, $BS_ICON)
GUICtrlSetImage(-1, @SystemDir & '\shell32.dll', 4, 0)
GUISetState()
While 1
    Switch GUIGetMsg()
        Case $iButton
            ; пример с использованием GUI аналогичен для FileOpenDialog и FileSaveDialog
            $sPath = FileSelectFolder('Выберите папку', '', 3, @DesktopDir, $hGui)
            ; продолжить цикл опроса от начала, если выбор отменён или объект не является папкой, например "Мой компьютер" или Корзина
            If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then ContinueLoop
            MsgBox(4096, 'Выбрана папка', $sPath)
        Case $GUI_EVENT_CLOSE
            GUIDelete($hGui)
            ExitLoop
    EndSwitch
WEnd

; Пример 2. Выбор ограничен внутри папки "Windows", с выбранной папкой "System32"
$sPath = FileSelectFolder('Выберите системную папку', @WindowsDir, 0, @SystemDir)
; продолжить цикл опроса от начала, если выбор отменён или объект не является папкой, например "Мой компьютер"
If @error Or Not StringInStr(FileGetAttrib($sPath), "D") Then Exit
MsgBox(4096, 'Выбрана папка', $sPath)