Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Передача параметров другой программе.


Страницы:   1 2

Новичек ©   (2007-11-18 12:44:00) 

Прошу помочь мне с таким вопросом.
Имеется программа, из которой запускается другая программа. А как этой другой программе передать некоторые данные?
Я зарегистрировал в обоих прогах собственное сообщение с помощью RegisterWindowMessage. А дальше как? Спасибо.


Новичек   (2007-11-18 14:39:00) [1]

Понял, спасибо.


Palladin   (2007-11-18 14:36:00) [2]

он срабатывает, несрабатывает ParamStr


Anatoly Podgoretsky   (2007-11-18 14:34:00) [3]

> Новичек  (18.11.2007 14:30:22)  [22]

CreateProcess это функция


Новичек   (2007-11-18 14:30:00) [4]

Понял.
А почему такой вызов не срабатывает
CreateProcess('app2.exe', ' "one two" ', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);


Palladin   (2007-11-18 14:25:00) [5]


> Новичек ©   (18.11.07 14:23) [20]

я же не зря кавычки привел

CreateProcess(nil, 'app2.exe "one two"', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);

ps. CreateProcess возвращает логическое значение, а не то что ты думаешь


Новичек   (2007-11-18 14:23:00) [6]


> Приводи текст вызова.

Prog_Exe := CreateProcess('app2.exe', 'one two', nil, nil, false, NORMAL_PRIORITY_CLASS, nil, nil, StartUpInfo, ProcessInfo);


Anatoly Podgoretsky   (2007-11-18 14:15:00) [7]


> Только небольшой глюк - если
> > YourApp2.exe "<строка>"
> состоит из двух слов, то

Приводи текст вызова.
Ты прочитал, что тебе написали про спецсимволы?
Кроме ParamStr есть и другие методы достучаться до командной строки.


Palladin   (2007-11-18 14:13:00) [8]

я? нет :) я лишь разумно предупредил человека о существующих количественных ограничениях на общих размер, передаваемых через коммандную строку, параметров...


Новичек   (2007-11-18 14:13:00) [9]

Проверил - работает :)
Только небольшой глюк - если
> YourApp2.exe "<строка>"
состоит из двух слов, то
> ShowMessage(ParamStr(1));
показывает второе слово :)


Anatoly Podgoretsky   (2007-11-18 14:12:00) [10]

Ты надеялся так легко отделаться?


Palladin   (2007-11-18 14:04:00) [11]

ok :)

Var
s:String;
SI:TStartUpInfo;
PI:TProcessInformation;
l:Integer;
begin
s:=vtvProgramPath+'project3.exe "';
l:=Length(s);
SetLength(s,l+500*1024*1024);
FillChar(s[l+1],Length(s)-l-1,'a');
s[Length(s)]:='"';

ZeroMemory(@SI,SizeOf(SI));
SI.cb:=SizeOf(SI);
SI.dwFlags:=STARTF_USESHOWWINDOW;
SI.wShowWindow:=SW_SHOWNORMAL;

If Not CreateProcess(Nil,PChar(s),Nil,Nil,True,NORMAL_PRIORITY_CLASS,Nil,Nil,SI,PI) Then RaiseLastOSError;
end;


параметр почему то задан неверно :)


Anatoly Podgoretsky   (2007-11-18 13:46:00) [12]

> Palladin  (18.11.2007 13:40:13)  [13]

А чего ты сюда привязал ShellExecute у него же ограничение на размер командной строки, используй CreateProcess


Palladin   (2007-11-18 13:40:00) [13]


> Anatoly Podgoretsky ©   (18.11.07 13:25) [11]

да ну :) а чего ж тогда

SetLength(s,500*1024*1024);
FillChar(s[1],Length(s),'a');
s[1]:='"';
s[Length(s)]:='"';
ShellExecute(0,nil,'project3.exe',PChar(s),nil,SW_NORMAL);

SE_ERR_OOM возвращает то? :)


Anatoly Podgoretsky   (2007-11-18 13:25:00) [14]

> Новичек  (18.11.2007 13:16:10)  [10]

Двойные кавычки нужные если строка содержит специальные символы, например и особенно пробелы.


Anatoly Podgoretsky   (2007-11-18 13:25:00) [15]

> Palladin  (18.11.2007 13:14:09)  [9]

С управляющими символами есть некоторая проблема, а с размером - каждой программе выделено 2 гб виртуального, адресного пространства.


Новичек   (2007-11-18 13:16:00) [16]

Сейчас же испытаю.


Palladin   (2007-11-18 13:14:00) [17]

проще пареной репы

YourApp2.exe "<строка>"

ShowMessage(ParamStr(1));

другое дело если она может содержать управляемые символы или быть размером в пол гига :)


Новичек   (2007-11-18 13:12:00) [18]

2Palladin
Ежели честно, то я несколько запутался. Передать необходимо строку.


Palladin   (2007-11-18 13:07:00) [19]


> Новичек ©   (18.11.07 13:04) [5]

а чем он тебе плох то? ты просто изначально двусмысленный вопрос задал... то ли тебе данные нужно передать, то ли  параметры... если передаваемые данные имеют четкую неизменную структуру и их немного, то, поверь, проще работать с параметрами...


Anatoly Podgoretsky   (2007-11-18 13:05:00) [20]

> Новичек  (18.11.2007 13:04:05)  [5]

Другого нет


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо