![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
передать данные в другое приложение [D5, D6, D7, D2005, 2000, XP]
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 ?