Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум на Исходниках.RU > Delphi: Общие вопросы > Передать аргументы в строку запуска |
Автор: cellleexx 02.03.21, 11:01 |
Здравствуйте! Подскажите, пожалуйста, как передать параметры в строку запуска внешнего приложения? Приложил фото. https://ibb.co/HDjcnbG ____________.PNG (, : 25) |
Автор: Gonarh 02.03.21, 11:31 |
Пользоваться WinExec - моветон, лучше CreateProcess <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> WinExec('"application.exe" /param1 /param2 data3', Sw_SHOW) Добавлено А вообще, читай документацию https://docs.microsoft.com/en-us/windows/wi...winbase-winexec |
Автор: cellleexx 04.03.21, 19:20 |
Подскажет кто? |
Автор: Gonarh 05.03.21, 03:40 |
Чем тебя не устраивает вариант, который я тебе подсказал? |
Автор: cellleexx 05.03.21, 11:21 |
Цитата Gonarh @ Полностью устраивает. |
Автор: filh 11.03.21, 08:26 |
Функция для запуска с параметрами <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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; Использование: <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> 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'ов вставить? <{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}> Parameters := '/' + Edit1.Text + ' /' + Edit2.Text + ' /' + Edit3.Text; |
Автор: cellleexx 13.03.21, 14:07 |
Цитата filh @ Да, да именно! Из Edit'ов! |