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

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

передать данные в другое приложение [D5, D6, D7, D2005, 2000, XP]


Страницы:   1 2

burrat ©   (2008-09-19 15:08:00) 

посоветуйте, как лучше передать данные в другое запускаемое приложение. В основном текст (по структуре ini). Есть вариант обработать чем нибудь типа base64 и передать в качестве параметра запуска, есть ограничение на длину параметра (Вин2000 и выше)?
Как еще можно передать, учитывая, что эта программа может быть консольной.

ЗЫ файлами не годится.


Leonid Troyanovsky   (2008-09-21 11:44:00) [1]


> Городской Шаман   (21.09.08 09:39) [26]

> тогда медитируй над mailslot

Если запускающее приложение консольное,
то кроме стандартного ввода/вывода ничего и не надо.
Только в запускаемом делать GetStdHandle(STD_INPUT_HANDLE)
надо не позднее OnCreate формы, если таковая существует.

А для самого произвольного случая - CreatePipe, DuplicateHandle
и передача значения хендла другому процессу.

--
Regards, LVT.


Городской Шаман   (2008-09-21 09:39:00) [2]

тогда медитируй над mailslot

CreateMailslot
http://msdn.microsoft.com/en-us/library/aa365147(VS.85).aspx


Германн   (2008-09-21 00:34:00) [3]


> Leonid Troyanovsky ©   (20.09.08 23:11) [24]
>
>
> > ANB   (19.09.08 17:44) [22]
>
> > Не. Тупые строки. Обнаружил случайно - у юзеров параметры
> > не жрались при запуске через CreateProcess. Причем ни
> ошибки
> > ничего. Просто молча обрезалось.
>
> Для CreateProcess - 32767.

Ооо. Оказывается не только я настолько был туп, что ввёл в стародавнее время для передачи параметра переменную Integer вместо Longint. :)


Leonid Troyanovsky   (2008-09-20 23:11:00) [4]


> ANB   (19.09.08 17:44) [22]

> Не. Тупые строки. Обнаружил случайно - у юзеров параметры
> не жрались при запуске через CreateProcess. Причем ни ошибки
> ничего. Просто молча обрезалось.

Для CreateProcess - 32767.
А, вот, максимальная длина каждого параметра - MAX_PATH.
Ну, или, 255, уже не упомню, бо проверялось еще на NT4.

А про разные ОС - это более про cmd.exe, оно и документировано.

--
Regards, LVT.


Palladin   (2008-09-19 19:47:00) [5]

та ну... я экспериметрировал, все там хорошо, проблема может быть только в приложениях...


ANB   (2008-09-19 17:44:00) [6]


> Palladin ©   (19.09.08 16:22) [20]

Не. Тупые строки. Обнаружил случайно - у юзеров параметры не жрались при запуске через CreateProcess. Причем ни ошибки ничего. Просто молча обрезалось.

> DCOM - садомазохист...

Зато писать мало :)


han_malign   (2008-09-19 16:54:00) [7]


> COM, DCOM, DDE

- COM - не прокатит
- DCOM - садомазохист...


Palladin   (2008-09-19 16:22:00) [8]


> Однозначно будут проблемы с командной строкой - на XP больше
> 300 байт у меня не передалось.

не верю, возможно присутствовали управляющие символы


ANB   (2008-09-19 16:16:00) [9]


> тогда через какой-то IPC (пайпы, сокеты, WM_COPYDATA)

+ COM, DCOM, DDE.

Впрочем, MMF тоже поканает.

Однозначно будут проблемы с командной строкой - на XP больше 300 байт у меня не передалось. А на некоторых компах и того меньше.


clickmaker   (2008-09-19 15:58:00) [10]

> [16] burrat   (19.09.08 15:49)

тогда через какой-то IPC (пайпы, сокеты, WM_COPYDATA)


Palladin   (2008-09-19 15:50:00) [11]


> от имени пользователя запустившего приложение

естественно


burrat   (2008-09-19 15:49:00) [12]


> clickmaker ©   (19.09.08 15:45) [14]
> > "Другое приложение" - часть сервера отправки писем
с исходниками?
>

да


Jeer   (2008-09-19 15:46:00) [13]


> > Jeer ©   (19.09.08 15:26) [6]
>
> Читайте сначала пятое сообщение, потом самое первое.


Знаешь, разбирайся сам в джампах, мне лень.
"Чем точнее изложен вопрос, тем скорее получите правильный ответ" (С) может и мой :))


clickmaker   (2008-09-19 15:45:00) [14]

> "Другое приложение" - часть сервера отправки писем

с исходниками?


burrat   (2008-09-19 15:42:00) [15]

Вопрос, прочитал, что pipe работают через стандартные файловые операции, эти операции выполняются от имени пользователя запустившего приложение или от system?


han_malign   (2008-09-19 15:42:00) [16]


> Ты не прав - винт точится при этом, а его жалко.

если запуск из другого процесса: Map File/Pipe/etc. + bInheritHandles для анонимных...


burrat   (2008-09-19 15:40:00) [17]

Palladin, спасибо, сейчас посмотрю.


burrat   (2008-09-19 15:39:00) [18]


> Для начала надо поставить вопрос - а как это приложение
> готово данные принять.

Так, как это опишу я, я задаю такт =)
Параемтром вроде бы получается удобно, никаких файловых операций, но если у меня данных на 1Кб, после base64 их может быть почти в двое больше, встает вопрос об ограничении длины параметра запуска.

PS Если очень хочется пофлеймить про файлы - приложения (оба) запускаются от учетной записи у которой нет прав на запись на диск. Проще говоря - нужно забыть про файлы, как я и написал в самом первом сообщении.


> Jeer ©   (19.09.08 15:26) [6]

Читайте сначала пятое сообщение, потом самое первое.


Palladin   (2008-09-19 15:38:00) [19]

ну раз так вот все жестоко и прямо вот нельзя через файлы, то через пайпы


Dmitry S   (2008-09-19 15:37:00) [20]

А почему бы не через STD INPUT ?


Страницы:   1 2

Наверх

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