Перейти на главную страничку сайта (список статей, файлы для скачивания)

ФОРУМ (здесь можно обсудить эту статью, а также саму программу AutoHotkey и проблемы её использования)

Проект перевода документации AutoHotkey: перечень переведённых статей и статей в работе.

Оригинал статьи в AutoHotkey.chm: "FileSelectFile", в содержании - "GUI, MsgBox, InputBox & Other Dialogs" - "FileSelectFile".

Ник переводчика: semechka.

Настоящее имя переводчика: Светлана Семёнова, г.Реутов Московской обл.

FileSelectFile

Команда FileSelectFile отображает стандартное диалоговое окно, позволяющее пользователю выбирать файл (файлы).

FileSelectFile, OutputVar [, Options, RootDir\Filename, Prompt, Filter]

Параметры

OutputVar Название переменной, в которой хранится название файла или файлов, выбранных пользователем. OutputVar будет пустой в том случае, если пользователь отменит диалоговое окно (т.е. не захочет выбрать файл).
Options Если параметр Options пропущен, то по умолчанию будет нулевое значение, что равнозначно отсутствию опций, приведенных ниже.

M [v1.0.25.05+]: множественный выбор. Для того чтобы пользователь мог выбрать больше одного файла через щелчки при нажатых клавишах Shift, Control или другими способами, добавляется буква М. При желании за М может последовать какое-то число, как показано ниже (например, допустимы как М, так и М1). Для того чтобы извлечь личные файлы, смотрите пример, приведенный в конце этой страницы.

S: кнопка Save. Для добавления в диалог кнопки Save вместо Open укажите букву S. S может произвольно сопровождаться числом (или несколькими числами), как показано ниже (например, допустимы как S, так и S24).

Даже если M и S отсутствуют, могут использоваться следующие числа. Чтобы задействовать больше одного числа, необходимо их сложить. Например, чтобы использовать числа 8 и 16, установите число 24.

1: Проверить существование файла.
2: Проверить существование пути (к файлу).
8: Подтвердить создание нового файла.
16: Подтвердить перезапись существующего файла.
32 [v1.0.43.09 +]: Ярлыки (.lnk файлы) выбираются как есть, а не разрешаются в свои объекты. Эта опция также предотвращает переход в папку через ярлык папки.
4 (устаревшая опция в v1.0.25.06+): Так как этот метод множественного выбора работает в неудобном для пользователя формате, рекомендуется вместо него использовать опцию М (рассмотренную выше).

Если опция "Подтвердить перезапись существующего файла" представлена без опции "Подтвердить создание нового файла", в диалоге будет содержаться кнопка Save, а не Open. Такое поведение обусловлено особенностями Windows.
RootDir\Filename Если присутствует параметр RootDir\Filename, он содержит одну или обе опции, приведенные ниже:

RootDir: корневой (начальный) каталог, который предположительно является папкой нижележащего уровня в %A_WorkingDir% в том случае, если абсолютный путь точно не определен. Если параметр RootDir опущен или пуст, то начальным будет каталог по умолчанию, который, возможно, будет зависеть от версии операционной системы. В WinNT/2k/XP и далее, это вероятно будет каталог, последний раз выбранный пользователем во время предшествующего использования FileSelectFile. В версиях 1.0.43.10 + может также использоваться CLSID, например ::{20d04fe0-3aea-1069-a2d8-08002b30309d} (т.е. Мой Компьютер), при этом любой подкаталог после CLSID должен заканчиваться наклонной чертой влево (иначе строка после последней наклонной черты влево будет интерпретироваться как имя файла, см. ниже).

Filename: имя файла по умолчанию показывается в поле редактирования диалога. Показываются только собственно имена файлов (без пути). Чтобы диалог был показан правильно, убедитесь, что нет никаких запрещенных символов (таких, как /<|:").

Примеры:
C:\My Pictures\Default Image Name.gif ; Представлены как RootDir, так и Filename.
C:\My Pictures ; Представлен только RootDir.
My Pictures ; Представлен только RootDir, причем относительно текущего рабочего каталога.
My File ; представлен только Filename (но если "My File" существует как некая папка,
исходя из вышесказанного следует считать, что это Rootdir).
Prompt Текст, показывающийся в окне, чтобы проинструктировать пользователя, что ему делать. Если параметр Promt опущен или пуст, по умолчанию будет "Select File - %A_SCRIPTNAME% (т.е. название текущего скрипта).
Filter Параметр Filter указывает, какие типы файлов будут показаны диалогом.

Пример: Документы (*.txt)
Пример: Аудио (*.wav; *.mp2; *.mp3)

Если этот параметр опущен, то по умолчанию будут "Все файлы (*.*)". Опция "Текстовые файлы (*.txt)" будет также доступна в меню "Типы файлов" диалога.

Другими словами, фильтр использует указанную строку, а также предлагает опцию "Все файлы (*.*)" в выпадающем списке "Типы файлов" диалога. Чтобы включить в фильтр больше одного файлового расширения, разделите их точкой с запятой, как показано выше в примере.

ErrorLevel

ErrorLevel устанавливается в 1, если пользователь отклонил диалог, не выбрав файл (например, нажав кнопку Cancel). Это также устанавливается в 1, если системе не удалось показать диалог (редко). Иначе, это устанавливается в 0.

Примечания

Если пользователь ничего не выбрал (например, нажав Cancel), переменная OutputVar остается пустой.

Если множественный выбор не задействован, OutputVar устанавливается как полный путь и наименование единственного файла, выбранного пользователем.

Если задействована опция M (множественный выбор), OutputVar устанавливается как список отдельных элементов, каждый из которых, исключая последний, завершается символом перевода строки (`n). Первым элементом в списке является путь, который содержит все отобранные файлы (этот путь завершается обратной косой чертой только в том случае, если он является корневой папкой, например C:\). Другие элементы являются отобранными именами файлов (без путей). Например:

C:\My Documents\New Folder [это путь, по которому располагаются все файлы, указанные ниже]
test1.txt [это – собственно имена файлов: нет информации о пути]
test2.txt
... и т.д.

(Пример в конце этой страницы покажет, как извлечь файлы, один за другим.)

Когда задействован множественный выбор, сумма длин отобранных имен файлов ограничивается 64 КБ. Несмотря на то, что этого обычно достаточно для хранения нескольких тысяч файлов, всё же, если лимит превышен, OutputVar станет пустой.

Окно графического интерфейса может показывать модальный диалог выбора файлов посредством Gui +OwnDialogs. Модальный диалог не дает пользователю взаимодействовать с окном графического интерфейса, пока этот диалог открыт.

Устаревшая опция: в версиях 1.0.25.06+ опция множественного выбора "4" устарела. Однако для совместимости со старыми скриптами эта опция все еще работает, как и раньше. А именно, если пользователь выберет только один файл, OutputVar будет содержать полный путь и название, сопровождающееся символом перевода строки (`n). Если же пользователь выбирает более одного файла, формат остается таким же, как и в опции M, описанной выше, за исключением того, что последний элемент также заканчивается символом перевода строки (`n).

Примеры

FileSelectFile, SelectedFile, 3, ,Открыть файл, Текстовые файлы (*.txt; *.doc)
if SelectedFile =
    MsgBox, Пользователь ничего не выбирает.
else
    MsgBox, Пользователь выбирает`n%SelectedFile%
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Пример с CLSID:
FileSelectFile, OutputVar,, ::{645ff040-5081-101b-9f08-00aa002f954e} ; Корзина.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Пример множественного выбора:
FileSelectFile, files, M3 ; M3 = Множественный выбор существующих файлов.
if files =
{
    MsgBox, Пользователь нажал cancel.
    return
}
Loop, parse, files, `n
{
    if a_index = 1
        MsgBox, Все выбранные файлы содержатся в %A_LoopField%.
    else
    {
        MsgBox, 4, , Следующий файл -  %A_LoopField%.  Продолжить?
        IfMsgBox, No, break
    }
}
return

Перейти на главную страничку сайта (список статей, файлы для скачивания)

© 2007 http://www.script-coding.com При любом использовании материалов сайта обязательна ссылка на него как на источник информации, а также сохранение целостности и авторства материалов.