Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];

Вниз

передать данные в другое приложение   Найти похожие ветки 

 
burrat   (2008-09-19 15:08) [0]

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

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


 
Palladin ©   (2008-09-19 15:11) [1]

и почему файлами не годится?


 
Jeer ©   (2008-09-19 15:12) [2]


> как лучше передать данные в другое запускаемое приложение


Откуда передать ?
Из мозга создателя-фантазера ?


 
ANB   (2008-09-19 15:15) [3]


> Как еще можно передать, учитывая, что эта программа может
> быть консольной.

Есть целая куча способов.
Выбор способа зависит от того, какими способами запускаемое приложение умеет данные принимать.

Кстати, файлами - один из самых экономных способов.


 
Jeer ©   (2008-09-19 15:18) [4]


> один из самых экономных способов.


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


 
burrat   (2008-09-19 15:24) [5]

"Другое приложение" - часть сервера отправки писем, этому приложению и передается структура в виде ini, в ней задаются параметры соединений, текст письма и получатель. Это приложение должно запускаться, формировать письмо и по smtp слать, потом закрываться. Встает вопрос о том, как передать ему данные.
Мое приложение следить за некими параметрами компьютера, при некоторых значениях этих параметров нужно отсылать письмо, используя "другое приложение".
Файлами нельзя. Просто нельзя.


 
Jeer ©   (2008-09-19 15:26) [6]

А теперь все с начала, внятно, с чувством и тактом ( размерностью ).


 
ANB   (2008-09-19 15:27) [7]


> Встает вопрос о том, как передать ему данные.

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


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

Тогда - MMF. Хотя это все равно "файл", а файлы же низзя :)


 
Dmitry S ©   (2008-09-19 15:37) [8]

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


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

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


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


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

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

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


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

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


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

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


 
han_malign ©   (2008-09-19 15:42) [12]


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

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


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

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


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

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

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


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


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


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


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


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

да


 
Palladin ©   (2008-09-19 15:50) [17]


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

естественно


 
clickmaker ©   (2008-09-19 15:58) [18]

> [16] burrat   (19.09.08 15:49)

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


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


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

+ COM, DCOM, DDE.

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

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


 
Palladin ©   (2008-09-19 16:22) [20]


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

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


 
han_malign ©   (2008-09-19 16:54) [21]


> COM, DCOM, DDE

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


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


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

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

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

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


 
Palladin ©   (2008-09-19 19:47) [23]

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


 
Leonid Troyanovsky ©   (2008-09-20 23:11) [24]


> ANB   (19.09.08 17:44) [22]

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

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

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

--
Regards, LVT.


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


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

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


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

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

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


 
Leonid Troyanovsky ©   (2008-09-21 11:44) [27]


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

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

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

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

--
Regards, LVT.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.006 c
2-1221721274
AlekseyB
2008-09-18 11:01
2008.10.26
Подскажите как написать запрос !!!


11-1194330061
Robt
2007-11-06 09:21
2008.10.26
Collapse


2-1221640600
Drowsy
2008-09-17 12:36
2008.10.26
=Bookmark= и


2-1221721382
Mahno
2008-09-18 11:03
2008.10.26
Помогите с вычислением


15-1220190358
Синий Дракон
2008-08-31 17:45
2008.10.26
Логическая задача





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский