Яндекс.Метрика

FileSelectFolder -Autohotkey

Выводит стандартное диалоговое окно, которое позволяет пользователю выбрать папку.

Выводит стандартное диалоговое окно, которое позволяет пользователю выбрать папку.

FileSelectFolder, OutputVar [, StartingFolder, Options, Prompt]

Параметры

OutputVar Имя переменной для сохранения имени выбранной папки. OutputVar будет пустой, если пользователь отменяет диалог (т.е. не хочет выбирать папку). Если пользователь выбирает корневой каталог (такой как C:\), OutputVar будет содержать обратную косую черту на конце. Если это нежелательно, удалите её, как показано в следующем примере:
FileSelectFolder, Folder StringRight, LastChar, Folder, 1 if LastChar = \ StringTrimRight, Folder, Folder, 1 ; Удалить обратную косую черту.
StartingFolder Начальная папка. Если этот параметр пустой или опущен, при открытии диалогового окна будет выделена папка Мои документы (или, возможно, Мой компьютер). Специальные папки могут быть заданы через CLSID, например, ::{20d04fe0-3aea-1069-a2d8-08002b30309d} (т.е. Мой компьютер).

Иначе самым обычным способом использования этого параметра является указание в нём звёздочки и сразу за ней - полного пути к диску или папке для начального выделения. Например, *C:\ приведёт к выделению диска С. Аналогично, *C:\My Folder выделит эту конкретную папку.

Звёздочка показывает, что пользователю разрешена навигация вверх (ближе к корню) от начальной папки. Без звёздочки его выбор был бы ограничен самой папкой StartingFolder и папками внутри неё. Одна из выгод пропуска звёздочки состоит в том, что StartingFolder показывается сразу в развёрнутом виде, что может сэкономить пользователю щелчок по первому плюсу.

Если звёздочка указана, навигация вверх может быть при желании ограничена до папки, отличной от Рабочего стола. Для этого нужно указать перед звёздочкой полный путь к самой верхней папке и после него ровно один пробел или табуляцию. В следующем примере пользователю не позволяется переходить выше папки C:\My Folder (но начальное выделение будет на C:\My Folder\Projects):
C:\My Folder *C:\My Folder\Projects
Options Опции (может быть выражением). Одно из следующих чисел:

0: все опции, указанные ниже, отключены (кроме Windows 2000, где кнопка "Создать папку" может появляться в любом случае).

1 (по умолчанию): присутствует кнопка, позволяющая пользователю создать новую папку. Однако этой кнопки не будет в Windows 95/98/NT.

Прибавьте 2 к числу выше, чтобы появилось текстовое поле, которое позволит пользователю ввести имя папки. Например, значение 3 для этого параметра задаёт как текстовое поле, так и кнопку "Создать папку".

Если пользователь введёт в текстовое поле ошибочное имя папки, в OutputVar будет помещено имя папки, выбранной в панели навигации, а не той, что ввёл пользователь, по крайней мере в Windows XP.
Prompt Текст, который будет показан в окне как инструкция для пользователя. Если опущен или пустой, будет показан как "Select Folder - %A_SCRIPTNAME%" (т.е. с использованием имени выполняющегося скрипта).

ErrorLevel

Устанавливается в 1, если пользователь закрыл диалоговое окно, не выбрав папку (например, нажав кнопку "Отмена"). Также устанавливается в 1, если операционная система отказывается выводить это диалоговое окно (редко). Иначе устанавливается в 0.

Примечания

Окно GUI может выводить модальное диалоговое окно выбора папки при помощи Gui +OwnDialogs. Модальный диалог не позволяет пользователю взаимодействовать с окном Gui до тех пор, пока не будет закрыт.

Известное ограничение: таймер, который запускается во время показа диалога FileSelectFolder, приведёт к отсрочиванию реакции на щелчки пользователя внутри диалога до момента своего завершения. Чтобы избежать этого, старайтесь не использовать таймеры, чьи подпрограммы долго выполняются, либо отключайте все таймеры на время показа диалога:

Thread, NoTimers FileSelectFolder, OutputVar,, 3 Thread, NoTimers, false

Операционная система также предоставляет стандартные диалоговые окна, предлагающие пользователю выбрать шрифт, цвет или значок. Эти диалоги могут выводиться с использованием DllCall(), как показано в http://www.autohotkey.com/forum/topic17230.htmlphp.

Примеры

FileSelectFolder, OutputVar, , 3 if OutputVar = MsgBox, Вы не выбрали папку. else MsgBox, Вы выбрали папку "%OutputVar%". Пример с CLSID: FileSelectFolder, OutputVar, ::{20d04fe0-3aea-1069-a2d8-08002b30309d} ; Мой компьютер.
Теги страницы: