Scintilla icon Shell - Lua библиотека для SciTE
Документация   FAQ   Регулярные выражения   SciTE Extension   LUA   SciTE Director   Команды SciTE и Scintilla   Сборка Ru-Board   Ядро SciTE-Ru   Shell   SciTE Helper   История

Описание

Внешняя Lua библиотека, расширяющая возможности встроенного lua обработчика SciTE.

Подключение

Перед использованием функций библиотеки ее необходимо загрузить:

package.cpath = props["SciteDefaultHome"].."\\tools\\LuaLib\\?.dll;"..package.cpath
-- покажем все пути, по которым SciTE будет искать нашу библиотеку
print(package.cpath)
-- загрузка библиотеки
require 'shell'
-- тест успешной загрузки
if shell then
  table.foreach(shell, print)
end

Функции

msgbox (strMessageText, [strTitle], [intOptions])

Описание:
  Вывод текстового сообщения с кнопками.

Параметры:
  strMessageText - текст сообщения
  strTitle - текст заголовка сообщения
  intOptions - числовое выражение, представляющее собой сумму значений, перечисленных в таблице.

ЗначениеОписание
0 Выводится кнопка ОК (значение по умолчанию)
1 Выводятся кнопки ОК и Отмена (Cancel)
2 Выводятся кнопки Стоп (Abort), Повтор (Retry) и Пропустить (Ignore)
3 Выводятся кнопки Да (Yes), Нет (No) и Отмена (Cancel)
4 Выводятся кнопки Да (Yes) и Нет (No)
5 Выводятся кнопки Повтор (Retry) и Отмена (Cancel)
16 Выводится значок Stop Mark
32 Выводится значок Question Mark
48 Выводится значок Exclamation Mark
64 Выводится значок Information Mark
0 По умолчанию в окне выбирается первая кнопка (значение по умолчанию)
256 По умолчанию в окне выбирается вторая кнопка
512 По умолчанию в окне выбирается третья кнопка
768 По умолчанию в окне выбирается четвёртая кнопка
0 Диалоговое окно выводится в модальном режиме (значение по умолчанию)
4096 Диалоговое окно выводится в модальном режиме и располагается сверху всех запускаемых приложений

Возвращаемое значение:
  Возвращает код нажатой кнопки. Значения перечислены в таблице:

ЗначениеОписание
1 Нажата кнопка ОК
2 Нажата кнопка Отмена (Cancel)
3 Нажата кнопка Стоп (Abort)
4 Нажата кнопка Повтор (Retry)
5 Нажата кнопка Пропустить (Ignore)
6 Нажата кнопка Да (Yes)
7 Нажата кнопка Нет (No)

Пример использования:

if shell.msgbox("Вы уверены?", "SciTE", 65) == 1 then
  print("Yes")
end

Авторы: Midas, mimir

inputbox(strCaptionText, strPrompt, strDefaultValue, funcCheckInput, intMinWidth)

Описание:
  Показывает диалоговое окно для ввода данных.

Параметры:
  strCaptionText - текст заголовка окна. Значение по-умолчанию равно "InputBox"
  strPrompt - текст приглашения над полем ввода. Значение по-умолчанию равно "Enter"
  strDefaultValue - исходное значение поля ввода. Значение по-умолчанию равно пустой строке ""
  funcCheckInput - функция для проверки вводимого текста. Получает текст в том виде, в каком он будет вместе с только что поступившим символом и возвращает либо true - принять этот символ, либо false - отклонить ввод. Значение по-умолчанию равно nil - ввод без каких-либо ограничений
  intMinWidth - минимальная ширина поля ввода в усреднённых символах (если strPrompt или strDefaultValue будут шире, то минимальная ширина автоматически подгоняется под большее из них). Значение по-умолчанию равно 20

Возвращаемое значение:
  содержит введенный текст. При отказе от ввода возвращает nil

Пример использования:

print(shell.inputbox("Переименование файла", "Введите новое имя:", "filename.ext", function(name) return not name:match('[\\/:|*?"<>]') end))

Автор: qVaclav

getfileattr (strFileName)

Описание:
  Получение атрибутов файла.

Параметры:
  strFileName - имя файла

Возвращаемое значение:
  содержит атрибуты файла в виде числа

Пример использования:

local attr = shell.getfileattr("c:\\MSDOS.SYS")
print(attr)

Авторы: Midas, Дмитрий Маслов

setfileattr (strFileName, intFileAttr)

Описание:
  Установка атрибутов файла.

Параметры:
  strFileName - имя файла
  iFileAttr - атрибуты файла в числовом виде

Возвращаемое значение:
  содержит true (при удачном завершении) либо false (при неудаче)

Пример использования:

local result = shell.setfileattr("c:\\MSDOS.SYS", 32)
if result == true then
  print("Атрибуты установлены успешно")
else
  print("error")
end

Авторы: Midas, Дмитрий Маслов

fileexists (strFileName)

Описание:
  Проверяет существование файла или папки с указанным именем.

Параметры:
  strFileName - имя файла или папки

Возвращаемое значение:
  содержит true если файл (папка) существует, либо false в противном случае

Пример использования:

local result = shell.fileexists("c:\\MSDOS.SYS")
if result then
  print("Файл существует")
else
  print("Файл отсутствует")
end

Автор: VladVRO

exec (strCommand, [strOperation], [boolNoShow], [bWaitOnReturn])

Описание:
  Выполнение внешней программы или открытие файла зарегистрированным приложением. Позволяет запускать файлы, документы и ссылки, а так же открывать каталоги в Проводнике Windows.

Параметры:
  strCommand - имя файла или папки с возможными параметрами запуска. Может содержать %переменные_окружения%
  strOperation - исполняемая операция из перечисленных в таблице:

ЗначениеОписание
open Открыть. strCommand - файл или папка (параметр по умолчанию)
edit Изменить. Открывает файл на редактирование. strCommand должен быть документом.
print Печать. strCommand должен быть документом.
explore Открывает папку в проводнике Windows (с двумя панелями). strCommand - файл или папка
select Открывает каталог в проводнике Windows и ставит выделение на файл или папку. strCommand - файл или папка
find Выводит диалоговое окно для поиска файлов по условиям, strCommand должен указывать путь к папке,
начиная с которой будет выполняться поиск
properties Выводит диалоговое окно свойств файла или папки, strCommand - файл или папка
другое Другая операция над файлом, имеющаяся в его контекстном меню. Например, есть операция "play" для мультимедийных файлов.

  boolNoShow - true | false (значение по умолчанию) - скрывать или нет окно запускаемой программы
  bWaitOnReturn - true | false (значение по умолчанию) - приостанавливать или нет скрипт на время выполнения команды

Возвращаемое значение:
  Первое содержит
    - при удачном завершении: true или, если функция была запущена с параметром bWaitOnReturn = true, код завершения процесса
    - при неудаче: false
  Второе содержит сообщение об ошибке/успехе операции;
  или содержит текст консольного вывода приложения (при запуске консольных приложений с параметрами boolNoShow = true и bWaitOnReturn = true)

Пример использования:

-- запустить приложение
shell.exec("clipbrd.exe")
shell.exec("CMD /c IPCONFIG /all > out.txt", nil, true, false)

-- вывести результат консольного приложения
print( shell.exec("CMD /c DIR", nil, true, true) )
print( shell.exec("cscript /nologo %WINDIR%\\system32\\eventquery.vbs /?", nil, true, true) )

-- анализ кода завершения процесса
if shell.exec("ping -n 1 localhost", nil, true, true) == 0 then
    print("Сеть работает") else print("Сеть не работает")
end

-- открыть каталог
shell.exec("%TEMP%")
shell.exec("%USERPROFILE%", "find")
shell.exec("regedit.exe", "explore")
shell.exec("%ProgramFiles%", "properties")
shell.exec("%ComSpec%", "select")

-- открыть ссылку на сайт
shell.exec("http://scite-ru.org/")

-- послать E-mail
shell.exec("mailto:support@mail.ru")

-- открыть файл
shell.exec("%WINDIR%\\WindowsUpdate.log")

-- распечатать файл
shell.exec("%WINDIR%\\win.ini", "print")

-- редактировать файл
shell.exec("%WINDIR%\\winnt.bmp", "edit")

Авторы: Дмитрий Маслов

findfiles (strFindMask)

Описание:
  Ищет файлы и папки по маске и результат возвращает в виде таблицы.

Параметры:
  strFindMask - имя файла или папки, или маска с использованием группового символа (wildcard), который заменяет один или несколько символов: знак вопроса (?) может представлять любой одиночный символ; звездочка (*) используется для представления любого символа или группы символов.

Возвращаемое значение:
  Возвращает список найденных файлов и папок в виде нумерованной таблицы (нумерация начинается с 1), где
  каждый элемент - структура содержащая:

ЗначениеОписание
name имя папки или файла
isdirectory признак файл это или папка (true если папка, false если файл)
attributes атрибуты (см. ниже)
size размер файла в байтах

  Атрибуты представлены в виде числа, которое может быть комбинацией следующих значений:

ЗначениеОписание
0x00000001 Файл только для чтения. Приложения могут читать такой файл, но не могут записывать или удалять его.
0x00000002 Файл скрыт. Такой файл не включается в обычный листинг каталога.
0x00000004 Это системный файл. Обычно такой файл является частью операционной системы.
0x00000010 Это каталог.
0x00000020 Это архивный файл. Приложения должны использовать этот флаг для копирования, архивирования или удаления.
0x00000080 У этого файла не установлены другие атрибуты. Это значение корректно только при использовании без остальных флагов.
0x00000100 Это временный файл. Приложения должны записывать в такой файл только в крайней необходимости. Большая часть данных файла находится в памяти и не сбрасывается на диск, так как файл будет удален.
0x00000200 Файл является т.н. "Sparse file".
0x00000400 Каталог является символической связью.
0x00000800 Файл или каталог сжат. Для файла это означает, что все данные его сжаты, для каталога - что компрессия по умолчанию применяется ко всем его файлам и подкаталогам.
0x00001000 Данные файла не доступны непосредственно. Означает, что реальные данные файла были физически перемещены на устройства хранения.
0x00002000 Этот файл или каталог не будут индексироваться службой индексирования.
0x00004000 Файл или каталог зашифрован. Для файла, это означает, что все данные в файле зашифрованы. Для директория, это означает, что шифрование является умолчанием для вновь созданных файлов и подкаталогов.
0x00010000 Это виртуальный файл.

  В случае неудачи возвращает nil

Пример использования:

local t = shell.findfiles("C:\\*")
if t then
  table.sort(t,
    function(v1,v2)
      if v1.isdirectory ~= v2.isdirectory then
        return v1.isdirectory
      else
        return v1.name:lower() < v2.name:lower()
      end
    end
  )
  table.foreachi(t,
    function(i,v)
      if v.isdirectory then
        print(string.format("D%5x %s", v.attributes, v.name))
      else
        print(string.format(" %5x %-30s", v.attributes, v.name), v.size)
      end
    end
  )
else
  print("not found")
end

Автор: VladVRO

Загрузка

Текущая версия Shell: 1.2

shell.dll
Исходный код