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

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

https://ibb.co/HDjcnbG
...
Рейтинг: 0 / 0
02.03.2021, 13:58
    #40049822
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать аргументы в строку запуска
Через специально для этого предназначенный параметр функции CreateProcess().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.03.2021, 14:15
    #40049829
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать аргументы в строку запуска
Dimitry Sibiryakov
Через специально для этого предназначенный параметр функции CreateProcess().
Издеваешься? Товарищ конкатенацию строк не освоил, а ты ему CreateProcess
...
Рейтинг: 0 / 0
02.03.2021, 15:37
    #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
02.03.2021, 18:34
    #40049963
Любин
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать аргументы в строку запуска
_Vasilisk_,

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

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

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

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

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


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

хотя в Delphi 7 наверное проще использовать ANSI версию, там же и строки и в VCL всё - ANSI. Так что наоборот, PWideChar можно заменить на PChar(=PAnsiChar в Delphi 7).
...
Рейтинг: 0 / 0
02.03.2021, 21:31
    #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
03.03.2021, 00:50
    #40050088
asutp2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать аргументы в строку запуска
s62
Любин,
есть юникодовская и неюникодовская версии этой функции. В более новых версиях Delphi, юникодовских, ShellExecute - синоним ShellExecuteW. У вас, судя по картинке, Delphi 7, поэтому ShellExecute - синоним ShellExecuteA. Замените в коде ShellExecute на ShellExecuteW.
+1
...
Рейтинг: 0 / 0
03.03.2021, 01:24
    #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
03.03.2021, 01:59
    #40050095
ъъъъъ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать аргументы в строку запуска
Любин
Исходник, если что

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

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

Исходник для первого поста, выше просили.
Остальное в процессе)
...
Рейтинг: 0 / 0
04.03.2021, 22:26
    #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
05.03.2021, 16:42
    #40051124
GunSmoker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Передать аргументы в строку запуска
_Vasilisk_
Dimitry Sibiryakov
Через специально для этого предназначенный параметр функции CreateProcess().
Издеваешься? Товарищ конкатенацию строк не освоил, а ты ему CreateProcess


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

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


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

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

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


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