EXECCONSOLEAPP — различия между версиями

Материал из GB wiki
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версий этого же участника)
Строка 2: Строка 2:
 
|Название=EXECCONSOLEAPP
 
|Название=EXECCONSOLEAPP
 
|Описание=Выполняет внешнее приложение. Возвращает код завершения приложения, помещает его текстовый вывод в переменную :AppStdOut
 
|Описание=Выполняет внешнее приложение. Возвращает код завершения приложения, помещает его текстовый вывод в переменную :AppStdOut
|Синтаксис=Вариант 1 - выполнение операции над указанным файлом, используя приложение по умолчанию<br/>
+
|Синтаксис=Вариант 1 &ndash; выполнение операции над указанным файлом, используя приложение по умолчанию<br/>
 
EXECCONSOLEAPP(`shellexecute`, '''Операция''', '''Файл''', '''Параметры''', '''Путь к файлу''', Вид окна)<br/>
 
EXECCONSOLEAPP(`shellexecute`, '''Операция''', '''Файл''', '''Параметры''', '''Путь к файлу''', Вид окна)<br/>
 
либо (упрощенный вариант)<br/>
 
либо (упрощенный вариант)<br/>
 
EXECCONSOLEAPP(`start`, '''Файл''', Режим)<br/>
 
EXECCONSOLEAPP(`start`, '''Файл''', Режим)<br/>
Вариант 2 запуск консольного приложения<br/>
+
Вариант 2 &ndash; запуск консольного приложения<br/>
EXECCONSOLEAPP('''Командная строка''', Режим ожидания)
+
EXECCONSOLEAPP('''Командная строка''', Режим ожидания, Флаги)
 
|Аргументы=
 
|Аргументы=
 
{{Аргумент
 
{{Аргумент
 
  |Название=Операция
 
  |Название=Операция
 
  |Пояснение=Одна из операций Windows, варианты:
 
  |Пояснение=Одна из операций Windows, варианты:
*`find` стандартный поиск Windows (файлов, папок, компьютеров и т.д.). Файл - путь к папке, начиная с которой выполняется поиск, остальные параметры не используются.
+
*`find` &ndash; стандартный поиск Windows (файлов, папок, компьютеров и т.д.). Файл - путь к папке, начиная с которой выполняется поиск, остальные параметры не используются.
*`explore` стандартный проводник Windows. Файл - путь к папке, на которой открывается проводник, остальные параметры не используются.
+
*`explore` &ndash; стандартный проводник Windows. Файл - путь к папке, на которой открывается проводник, остальные параметры не используются.
*`edit` редактирование файла в приложении по умолчанию
+
*`edit` &ndash; редактирование файла в приложении по умолчанию
*`open` открытие файла в приложении по умолчанию
+
*`open` &ndash; открытие файла в приложении по умолчанию
*`print`,`printto` печать файла из приложения по умолчанию
+
*`print`,`printto` &ndash; печать файла из приложения по умолчанию
 
}}<br/>
 
}}<br/>
 
{{Аргумент
 
{{Аргумент
Строка 33: Строка 33:
 
  |Название=Вид окна
 
  |Название=Вид окна
 
  |Пояснение=Вид окна приложения (необязательный параметр):
 
  |Пояснение=Вид окна приложения (необязательный параметр):
*0 (`SW_HIDE`) - скрывает окно загружаемого приложения и активизирует другое окно;
+
*0 (`SW_HIDE`) &ndash; скрывает окно загружаемого приложения и активизирует другое окно;
*1 (`SW_SHOWNORMAL`) - отображает главное окно приложения и делает его активным. Если окно приложения минимизировано или максимизировано, Windows восстанавливает его первоначальный размер и позицию;
+
*1 (`SW_SHOWNORMAL`) &ndash; отображает главное окно приложения и делает его активным. Если окно приложения минимизировано или максимизировано, Windows восстанавливает его первоначальный размер и позицию;
*2 (`SW_SHOWMINIMIZED`) - окно загружаемого приложения минимизировано;
+
*2 (`SW_SHOWMINIMIZED`) &ndash; окно загружаемого приложения минимизировано;
*3 (`SW_MAXIMIZE`) - раскрывает окно приложения на весь экран и делает его активным;
+
*3 (`SW_MAXIMIZE`) &ndash; раскрывает окно приложения на весь экран и делает его активным;
*4 (`SW_SHOWNOACTIVATE`) - отображает окно приложения в его последних сохранённых размерах, но не делает его активным.
+
*4 (`SW_SHOWNOACTIVATE`) &ndash; отображает окно приложения в его последних сохранённых размерах, но не делает его активным.
 
}}<br/>
 
}}<br/>
 
{{Аргумент
 
{{Аргумент
Строка 47: Строка 47:
 
  |Название=Режим
 
  |Название=Режим
 
  |Пояснение=строка, режим запуска Windows-приложения для функции ShellExecute:
 
  |Пояснение=строка, режим запуска Windows-приложения для функции ShellExecute:
*`open` открытие документа
+
*`open` &ndash; открытие документа
*`print` печать документа.
+
*`print` &ndash; печать документа.
 
}}<br/>
 
}}<br/>
 
{{Аргумент
 
{{Аргумент
 
  |Название=Режим ожидания
 
  |Название=Режим ожидания
 
  |Пояснение=целое число:
 
  |Пояснение=целое число:
*0 с ожиданием. Никакие формы ГБ недоступны до окончания работы внешней программы;
+
*0 &ndash; с ожиданием. Никакие формы ГБ недоступны до окончания работы внешней программы;
*1 условное ожидание. Форма, с которой произведен вызов, становится недоступной, но можно работать в других. По окончании работы внешней программы недоступная форма становится вновь доступной;
+
*1 &ndash; условное ожидание. Форма, с которой произведен вызов, становится недоступной, но можно работать в других. По окончании работы внешней программы недоступная форма становится вновь доступной;
*2 без ожидания.
+
*2 &ndash; без ожидания.
Стандартный вывод консольных приложений, запущенных через ExecConsoleApp в режиме с ожиданием (0 и 1), перехватывается и записывается в переменную ''':AppStdOut'''
+
При значениях режима ожидания 0 и 1 результат вызова - это exitcode процесса.
 +
}}<br/>
 +
{{Аргумент
 +
|Название=Флаги
 +
|Пояснение=целое число (битовая маска):
 +
*бит #0=1 &ndash; скрыть окно консоли;
 +
*бит #1=1 &ndash; НЕ перехватывать стандартный вывод (stdout).
 +
 
 +
Стандартный вывод консольных приложений, запущенных через ExecConsoleApp в режиме с ожиданием (0 и 1) и флагом со сброшенным битом #1 (бит #1=0), перехватывается и записывается в переменную ''':AppStdOut'''. Не всегда работает надёжно, поэтому можно перенаправить вывод в файл, а затем читать из него.
 
}}
 
}}
 
|Результат=Целое число
 
|Результат=Целое число
Строка 71: Строка 79:
 
                 `a C:\myarchive.rar "C:\Program Files\WinRAR\WinRAR.chm"`,
 
                 `a C:\myarchive.rar "C:\Program Files\WinRAR\WinRAR.chm"`,
 
                 ``
 
                 ``
 +
)
 +
Печать на выбранный принтер (работает не со всеми типами документов, вопросы - к Microsoft). Путь и имя файла, а также имя принтера, если они содержат пробелы, нужно передавать в кавычках:
 +
ExecConsoleApp(
 +
  `shellexecute`,
 +
  `printto`,
 +
  `"D:\Файлы для печати\1.doc"`,
 +
  `"\\AGENT007\hpLJ1010HB"`,
 +
  0,
 +
  `SW_HIDE`
 +
)
 +
Пример скрипта для пакетной печатной формы (печатает файл, путь и имя которого хранится в документе, на принтер, выбранный в стандартной форме печати):
 +
IfEmpty(
 +
  DataSet.Heap.FileToPrint,
 +
  0,
 +
  (
 +
    ExecConsoleApp(
 +
      `shellexecute`,
 +
      `printto`,
 +
      `"`+DataSet.Heap.FileToPrint+`"`,
 +
      `"`+:PrinterName+`"`,
 +
      0,
 +
      `SW_HIDE`
 +
    ),
 +
    0
 +
  )
 +
)
 +
Печать на принтер "по умолчанию":
 +
ExecConsoleApp(
 +
  `shellexecute`,
 +
  `print`,
 +
  `d:\aaa.pdf`,
 +
  ``,
 +
  0,
 +
  `SW_HIDE`
 
  )
 
  )
 
}}
 
}}

Текущая версия на 06:06, 17 декабря 2024

Выполняет внешнее приложение. Возвращает код завершения приложения, помещает его текстовый вывод в переменную :AppStdOut

Синтаксис

Вариант 1 – выполнение операции над указанным файлом, используя приложение по умолчанию
EXECCONSOLEAPP(`shellexecute`, Операция, Файл, Параметры, Путь к файлу, Вид окна)
либо (упрощенный вариант)
EXECCONSOLEAPP(`start`, Файл, Режим)
Вариант 2 – запуск консольного приложения
EXECCONSOLEAPP(Командная строка, Режим ожидания, Флаги)

Аргументы

Операция
Одна из операций Windows, варианты:
  • `find` – стандартный поиск Windows (файлов, папок, компьютеров и т.д.). Файл - путь к папке, начиная с которой выполняется поиск, остальные параметры не используются.
  • `explore` – стандартный проводник Windows. Файл - путь к папке, на которой открывается проводник, остальные параметры не используются.
  • `edit` – редактирование файла в приложении по умолчанию
  • `open` – открытие файла в приложении по умолчанию
  • `print`,`printto` – печать файла из приложения по умолчанию
Файл
Имя файла, с которым следует выполнить операцию.
Параметры
Список параметров, передаваемых загружаемому приложению. Например, для операции printto параметром может быть имя принтера
Путь к файлу
Путь к файлу, указанному в параметре Файл. Если Файл уже содержит путь, то Путь=пустая строка
Вид окна
Вид окна приложения (необязательный параметр):
  • 0 (`SW_HIDE`) – скрывает окно загружаемого приложения и активизирует другое окно;
  • 1 (`SW_SHOWNORMAL`) – отображает главное окно приложения и делает его активным. Если окно приложения минимизировано или максимизировано, Windows восстанавливает его первоначальный размер и позицию;
  • 2 (`SW_SHOWMINIMIZED`) – окно загружаемого приложения минимизировано;
  • 3 (`SW_MAXIMIZE`) – раскрывает окно приложения на весь экран и делает его активным;
  • 4 (`SW_SHOWNOACTIVATE`) – отображает окно приложения в его последних сохранённых размерах, но не делает его активным.
Командная строка
строка, полный или относительный путь к исполняемому файлу, а также аргументы командной строки (ключи).
Для вызова команд ОС нужно использовать синтаксис «cmd /c <команда>».
Режим
строка, режим запуска Windows-приложения для функции ShellExecute:
  • `open` – открытие документа
  • `print` – печать документа.
Режим ожидания
целое число:
  • 0 – с ожиданием. Никакие формы ГБ недоступны до окончания работы внешней программы;
  • 1 – условное ожидание. Форма, с которой произведен вызов, становится недоступной, но можно работать в других. По окончании работы внешней программы недоступная форма становится вновь доступной;
  • 2 – без ожидания.

При значениях режима ожидания 0 и 1 результат вызова - это exitcode процесса.

Флаги
целое число (битовая маска):
  • бит #0=1 – скрыть окно консоли;
  • бит #1=1 – НЕ перехватывать стандартный вывод (stdout).

Стандартный вывод консольных приложений, запущенных через ExecConsoleApp в режиме с ожиданием (0 и 1) и флагом со сброшенным битом #1 (бит #1=0), перехватывается и записывается в переменную :AppStdOut. Не всегда работает надёжно, поэтому можно перенаправить вывод в файл, а затем читать из него.

Тип результата

Целое число

Примеры

Запустит "Блокнот":

ExecConsoleApp(`start`, `notepad`)

Удалит из папки c:\temp все файлы:

ExecConsoleApp(`cmd /c del c:\temp\*.txt`, 2)

Запустит проводник Windows и отобразит в нём папку "e:\1\":

ExecConsoleApp(`shellexecute`, `explore`, `e:\1\`, ``, ``, `SW_SHOWNORMAL`)

Запустит winrar.exe, который создаст архив C:\myarchive.rar и заархивирует файл "C:\Program Files\WinRAR\WinRAR.chm":

ExecConsoleApp(`shellexecute`,
               `open`,
               `"C:\Program Files\WinRAR\WinRAR.exe"`,
               `a C:\myarchive.rar "C:\Program Files\WinRAR\WinRAR.chm"`,
               ``
)

Печать на выбранный принтер (работает не со всеми типами документов, вопросы - к Microsoft). Путь и имя файла, а также имя принтера, если они содержат пробелы, нужно передавать в кавычках:

ExecConsoleApp(
  `shellexecute`,
  `printto`,
  `"D:\Файлы для печати\1.doc"`,
  `"\\AGENT007\hpLJ1010HB"`,
  0,
  `SW_HIDE`
)

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

IfEmpty(
  DataSet.Heap.FileToPrint,
  0,
  (
    ExecConsoleApp(
      `shellexecute`,
      `printto`,
      `"`+DataSet.Heap.FileToPrint+`"`,
      `"`+:PrinterName+`"`,
      0,
      `SW_HIDE`
    ),
    0
  )
)

Печать на принтер "по умолчанию":

ExecConsoleApp(
  `shellexecute`,
  `print`,
  `d:\aaa.pdf`,
  ``,
  0,
  `SW_HIDE`
)