Подскажите самый быстрый способ передачи данных между прилож
От: Аноним  
Дата: 14.08.04 16:55
Оценка:
В чем идея. Есть два приложения: одно от CDialog а другое SDI.
Приложение от СDialog скачивает файл *.jpg и передает второму его название.
Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла
через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения,
а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не
посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению
этот вариант меня не устраивает по-другим соображениям).
Заранее благодарен
Re: Подскажите самый быстрый способ передачи данных между пр
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 14.08.04 17:19
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>В чем идея. Есть два приложения: одно от CDialog а другое SDI.

А>Приложение от СDialog скачивает файл *.jpg и передает второму его название.
А>Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла
А>через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения,
А>а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не
А>посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению
А>этот вариант меня не устраивает по-другим соображениям).
А>Заранее благодарен

Попробуйте тогда через RegisterWindowMessage() создать свое сообщение (в качестве строки можно испорльзовать GUID). МОжет быть быстрее получится...
... << Rsdn@Home 1.1.4 beta 1 >>
HgLab: Mercurial Server and Repository Management for Windows
Re[2]: Подскажите самый быстрый способ передачи данных между
От: mdw  
Дата: 14.08.04 19:24
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н>Здравствуйте, <Аноним>, Вы писали:


А>>В чем идея. Есть два приложения: одно от CDialog а другое SDI.

А>>Приложение от СDialog скачивает файл *.jpg и передает второму его название.
А>>Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла
А>>через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения,
А>>а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не
А>>посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению
А>>этот вариант меня не устраивает по-другим соображениям).
А>>Заранее благодарен

Н>Попробуйте тогда через RegisterWindowMessage() создать свое сообщение (в качестве строки можно испорльзовать GUID). МОжет быть быстрее получится...


С помощью собственного сообщения нельзя будет передать текст между процессами.
Для WM_COPYDATA, WM_SETTEXT etc Windows имеет специальную обработку.

Есть другие способы общения между процессами.
http://rsdn.ru/article/baseserv/ipc.xml
Автор(ы): Алекс Jenter
Дата: 10.03.2001
Обзор основных технологий IPC: Очень многим приложениям, если не большей части, требуется
информация от других приложений, либо они должны эту информацию сообщать.
Именно поэтому в операционную систему встраивается множество механизмов,
которые обеспечивают т.н. Interproccess Communication (IPC) — то есть
межпроцессное взаимодействие...


Или попробуйте задержать второе приложение на секунду, а затем посылайте в WM_COPYDATA сразу пять имен файлов, раз в секунду
Re[3]: Подскажите самый быстрый способ передачи данных между
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 14.08.04 19:32
Оценка:
Здравствуйте, mdw, Вы писали:

mdw>Здравствуйте, Нахлобуч, Вы писали:


Н>>Попробуйте тогда через RegisterWindowMessage() создать свое сообщение (в качестве строки можно испорльзовать GUID). МОжет быть быстрее получится...


mdw>С помощью собственного сообщения нельзя будет передать текст между процессами.


А разве через WPARAM/LPARAM никак?
... << Rsdn@Home 1.1.4 beta 1 >>
HgLab: Mercurial Server and Repository Management for Windows
Re[4]: Подскажите самый быстрый способ передачи данных между
От: mdw  
Дата: 14.08.04 20:40
Оценка:
Здравствуйте, Нахлобуч, Вы писали:

Н>Здравствуйте, mdw, Вы писали:


mdw>>Здравствуйте, Нахлобуч, Вы писали:


Н>>>Попробуйте тогда через RegisterWindowMessage() создать свое сообщение (в качестве строки можно испорльзовать GUID). МОжет быть быстрее получится...


mdw>>С помощью собственного сообщения нельзя будет передать текст между процессами.


Н>А разве через WPARAM/LPARAM никак?


Нет. У Вас есть строка, она расположена в памяти процесса №1 по адресу Х. Вы передаете адрес Х через LPARAM в окно другого процесса №2. Но в процессе №2 по адресу Х располагается что-то другое(или ничего), ведь у каждого процесса своя виртуальная память. При попытке процесса №2 читать с адреса Х получиться или мусор или access violation.
Для WM_COPYDATA, WM_GET/SETTEXT etc, Windows специально копирует(через общую проекцию файла) нужный участок памяти в память другого процесса.
Re: Подскажите самый быстрый способ передачи данных между пр
От: aGrey Литва  
Дата: 14.08.04 21:39
Оценка:
Здравствуйте, Аноним

Лучше использовать COM. Возни больше — зато будет работать без глюков.
Re: Подскажите самый быстрый способ передачи данных между пр
От: sercher Украина  
Дата: 15.08.04 09:14
Оценка:
Здравствуйте, Аноним, Вы писали:

А>В чем идея. Есть два приложения: одно от CDialog а другое SDI.

А>Приложение от СDialog скачивает файл *.jpg и передает второму его название.
А>Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла
А>через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения,
А>а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не
А>посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению
А>этот вариант меня не устраивает по-другим соображениям).
А>Заранее благодарен

Самый быстрый — pipe, socket.
Re: Подскажите самый быстрый способ передачи данных между пр
От: dr. Frost Россия  
Дата: 16.08.04 06:44
Оценка:
http://www.codeguru.com/Cpp/COM-Tech/atl/misc/article.php/c7387

я пытался решить другую проблему но думаю что это тебе подойдет... возможно потупит только на соединении но передавать должен шустрее, дополнение там типа СОМ объект так вот зарегить его нада как локальный сервер.
Уверенность, это чувство которое возникает у вас перед тем как вы осознали ситуацию.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.