powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передать аргументы в строку запуска
18 сообщений из 18, страница 1 из 1
Передать аргументы в строку запуска
    #40049820
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Подскажите, пожалуйста, как передать параметры в строку запуска внешнего приложения?
Приложил фото.

https://ibb.co/HDjcnbG
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40049822
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Через специально для этого предназначенный параметр функции CreateProcess().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40049829
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Через специально для этого предназначенный параметр функции CreateProcess().
Издеваешься? Товарищ конкатенацию строк не освоил, а ты ему CreateProcess
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40049879
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любин,

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure StartWithParams(const AFileName, AParams: string);
begin
  ShellExecute(0, 'open', PWideChar(AFileName), PWideChar(AParams), nil, 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  StartWithParams('application.exe', Edit1.Text + ' ' + Edit2.Text + ' ' + Edit3.Text);
end;
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40049963
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_,

Вы пополнили мой словарный запас!
Конкатенация - сцепление)
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40049966
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
asutp2,

Буду благодарен за полный текст, чтобы разобраться!
А то пока [Error] Unit1.pas(31): Undeclared identifier: 'ShellExecute'.

Ща буду вспоминать по старым проектам, как они там объявляются..
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40049977
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Любин
asutp2,

Буду благодарен за полный текст, чтобы разобраться!
А то пока [Error] Unit1.pas(31): Undeclared identifier: 'ShellExecute'.

Ща буду вспоминать по старым проектам, как они там объявляются..


uses
ShellAPI,
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050022
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Стою.
[Error] Unit1.pas(36): Incompatible types: 'WideChar' and 'Char'
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050025
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любин,
есть юникодовская и неюникодовская версии этой функции. В более новых версиях Delphi, юникодовских, ShellExecute - синоним ShellExecuteW. У вас, судя по картинке, Delphi 7, поэтому ShellExecute - синоним ShellExecuteA. Замените в коде ShellExecute на ShellExecuteW.
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050026
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62,

хотя в Delphi 7 наверное проще использовать ANSI версию, там же и строки и в VCL всё - ANSI. Так что наоборот, PWideChar можно заменить на PChar(=PAnsiChar в Delphi 7).
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050033
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любин
Здравствуйте!

Подскажите, пожалуйста, как передать параметры в строку запуска внешнего приложения?
Приложил фото.

https://ibb.co/HDjcnbG


Никогда не использовал WinExec (из ДОС -> Win32 перешел).
Жаль, что исходники приложили как картинку, но если WinExec Вас устраивает, то посмотрите на функцию format:
Код: sql
1.
WinExec(format('Application.exe /%s /%s /%s',[Edit1.Text,Edit2.Text,Edit3.Text]),SW_SHOW);


Случаи с пробелами в аргументах нужно отдельно обрабатывать
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050088
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
Любин,
есть юникодовская и неюникодовская версии этой функции. В более новых версиях Delphi, юникодовских, ShellExecute - синоним ShellExecuteW. У вас, судя по картинке, Delphi 7, поэтому ShellExecute - синоним ShellExecuteA. Замените в коде ShellExecute на ShellExecuteW.
+1
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050092
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
x1ca4064,
на данном этапе мне действительно все равно, WinExec работает и ладно.

Про экзекьюты почитал и оставил себе такой текст "Ответ: вместо функции ShellExecute следует использовать функцию ShellExecuteEx, а вместо функции WinExec следует использовать функцию CreateProcess."

Исходник, если что

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec ('app.exe /param1 /param2 /data3' SW_SHOW);
end;

end.


...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050095
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Любин
Исходник, если что

Зашибись такой исходник. А из эдитов как параметры формируются?
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050344
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
Любин
Исходник, если что

Зашибись такой исходник. А из эдитов как параметры формируются?

Исходник для первого поста, выше просили.
Остальное в процессе)
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40050882
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, набираюсь навыков! Перешел на RAD.

Работает вот так:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
procedure StartWithParams(const AFileName, AParams: string);
begin
  ShellExecute(0, 'open', PChar(AFileName), PChar(AParams), nil, 1);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  StartWithParams('ping', Edit1.Text + ' ' + Edit2.Text);
end;



https://ibb.co/MnPX2Xz
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40051124
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
Dimitry Sibiryakov
Через специально для этого предназначенный параметр функции CreateProcess().
Издеваешься? Товарищ конкатенацию строк не освоил, а ты ему CreateProcess


Добью товарища, что-ли.

Почему вам НИКОГДА не нужно использовать WinExec и ShellExecute .
...
Рейтинг: 0 / 0
Передать аргументы в строку запуска
    #40053170
Любин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GunSmoker
_Vasilisk_
пропущено...
Издеваешься? Товарищ конкатенацию строк не освоил, а ты ему CreateProcess


Добью товарища, что-ли.

Почему вам НИКОГДА не нужно использовать WinExec и ShellExecute .

А Блин, лонгрид)
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передать аргументы в строку запуска
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]