-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Передать аргументы в строку запуска

Четверг, 11 Марта 2021 г. 11:26 + в цитатник
filh: Функция для запуска с параметрами
    function ExecuteProcess(const FileName, Params: string; Folder: string; WaitUntilTerminated, WaitUntilIdle, RunMinimized: boolean;
    var ErrorCode: integer): boolean;
    var
    CmdLine: string;
    WorkingDirP: PChar;
    StartupInfo: TStartupInfo;
    ProcessInfo: TProcessInformation;
    begin
    Result := true;
    CmdLine := '"' + FileName + '" ' + Params;
    if Folder = '' then Folder := ExcludeTrailingPathDelimiter(ExtractFilePath(FileName));
    ZeroMemory(@StartupInfo, SizeOf(StartupInfo));
    StartupInfo.cb := SizeOf(StartupInfo);
    if RunMinimized then
    begin
    StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
    StartupInfo.wShowWindow := SW_SHOWMINIMIZED;
    end;
    if Folder <> '' then WorkingDirP := PChar(Folder)
    else WorkingDirP := nil;
    if not CreateProcess(nil, PChar(CmdLine), nil, nil, false, 0, nil, WorkingDirP, StartupInfo, ProcessInfo) then
    begin
    Result := false;
    ErrorCode := GetLastError;
    exit;
    end;
    with ProcessInfo do
    begin
    CloseHandle(hThread);
    if WaitUntilIdle then WaitForInputIdle(hProcess, INFINITE);
    if WaitUntilTerminated then
    repeat
    Application.ProcessMessages;
    until MsgWaitForMultipleObjects(1, hProcess, false, INFINITE, QS_ALLINPUT) <> WAIT_OBJECT_0 + 1;
    CloseHandle(hProcess);
    end;
    end;

Использование:
    var
    FileName, Parameters, WorkingFolder: string;
    Error: integer;
    OK: boolean;
    begin
    FileName := 'C:\FullPath\myapp.exe'; // твое приложение для запуска
    WorkingFolder := ''; // рабочая папка, если пусто, то возьмет путь из запущенного приложения
    Parameters := ''; // твои параметры из Edit'ов
    OK := ExecuteProcess(FileName, Parameters, WorkingFolder, false, false, false, Error);
    if not OK then ShowMessage('Ошибка: ' + IntToStr(Error));
    end;


Или тебя интересовало как из Edit'ов вставить?
    Parameters := '/' + Edit1.Text + ' /' + Edit2.Text + ' /' + Edit3.Text;

https://forum.sources.ru/index.php?showtopic=421232&view=findpost&p=3845302

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку