Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.162.166] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте!
Подскажите, пожалуйста, как передать параметры в строку запуска внешнего приложения? Приложил фото. https://ibb.co/HDjcnbG Прикреплённый файл____________.PNG (23,24 Кбайт, скачиваний: 27) |
Сообщ.
#2
,
|
|
|
Пользоваться WinExec - моветон, лучше CreateProcess
WinExec('"application.exe" /param1 /param2 data3', Sw_SHOW) Добавлено А вообще, читай документацию https://docs.microsoft.com/en-us/windows/wi...winbase-winexec |
Сообщ.
#3
,
|
|
|
Подскажет кто?
|
Сообщ.
#4
,
|
|
|
Чем тебя не устраивает вариант, который я тебе подсказал?
|
Сообщ.
#5
,
|
|
|
Цитата Gonarh @ Полностью устраивает. |
Сообщ.
#6
,
|
|
|
Функция для запуска с параметрами
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; |
Сообщ.
#7
,
|
|
|
Цитата filh @ Да, да именно! Из Edit'ов! |