Программирование: ShellExec

Прототип

function ShellExec(const Verb, Filename, Params, WorkingDir: String; const ShowCmd: Integer; const Wait: TExecWait; var ErrorCode: Integer): Boolean;

Описание

Открывает указанный файл или выполняет другое действие, заданное параметром Verb, используя те же учетные данные, что и программа установки/удаления. Параметр Filename может содержать исполняемый файл, документ, папку или ссылку с адресом URL. Если параметр Verb содержит пустую строку, то по умолчанию будет использовано действие, связанное с данным типом файла (как правило "open"). Параметр Wait определяет работу функции: завершить немедленно, ожидать завершения запущенного процесса или его простоя. Функция возвращает значение True, если заданный файл был успешно открыт, иначе — False. Если функция вернёт False, то параметр ErrorCode будет содержать код возникшей ошибки. Используйте вызов SysErrorMessage(ErrorCode), чтобы получить описание ошибки.

Комментарии

Класс TExecWait представлен следующими значениями:

TExecWait = (ewNoWait, ewWaitUntilTerminated, ewWaitUntilIdle);

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

Смотрите коды системных ошибок в библиотеке MSDN [внешняя ссылка].

Эта функция не может использоваться для запуска самой программы установки до тех пор, пока не начнётся процесс установки.

Пример

var
  ErrorCode: Integer;
begin
  if not ShellExec('', ExpandConstant('{app}\filename.rtf'),
     '', '', SW_SHOWNORMAL, ewNoWait, ErrorCode) then
  begin
    // если нужно, обработайте результат в случае ошибки
  end;
end;

См. также:

ShellExecAsOriginalUser