Подскажите самый быстрый способ передачи данных между прилож
От:
Аноним
Дата:
14.08.04 16:55
Оценка:
В чем идея. Есть два приложения: одно от CDialog а другое SDI.
Приложение от СDialog скачивает файл *.jpg и передает второму его название.
Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла
через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения,
а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не
посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению
этот вариант меня не устраивает по-другим соображениям).
Заранее благодарен
Re: Подскажите самый быстрый способ передачи данных между пр
Здравствуйте, <Аноним>, Вы писали:
А>В чем идея. Есть два приложения: одно от 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]: Подскажите самый быстрый способ передачи данных между
Здравствуйте, Нахлобуч, Вы писали:
Н>Здравствуйте, <Аноним>, Вы писали:
А>>В чем идея. Есть два приложения: одно от CDialog а другое SDI. А>>Приложение от СDialog скачивает файл *.jpg и передает второму его название. А>>Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла А>>через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения, А>>а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не А>>посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению А>>этот вариант меня не устраивает по-другим соображениям). А>>Заранее благодарен
Н>Попробуйте тогда через RegisterWindowMessage() создать свое сообщение (в качестве строки можно испорльзовать GUID). МОжет быть быстрее получится...
С помощью собственного сообщения нельзя будет передать текст между процессами.
Для WM_COPYDATA, WM_SETTEXT etc Windows имеет специальную обработку.
Здравствуйте, 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, Вы писали:
mdw>>Здравствуйте, Нахлобуч, Вы писали:
Н>>>Попробуйте тогда через RegisterWindowMessage() создать свое сообщение (в качестве строки можно испорльзовать GUID). МОжет быть быстрее получится...
mdw>>С помощью собственного сообщения нельзя будет передать текст между процессами.
Н>А разве через WPARAM/LPARAM никак?
Нет. У Вас есть строка, она расположена в памяти процесса №1 по адресу Х. Вы передаете адрес Х через LPARAM в окно другого процесса №2. Но в процессе №2 по адресу Х располагается что-то другое(или ничего), ведь у каждого процесса своя виртуальная память. При попытке процесса №2 читать с адреса Х получиться или мусор или access violation.
Для WM_COPYDATA, WM_GET/SETTEXT etc, Windows специально копирует(через общую проекцию файла) нужный участок памяти в память другого процесса.
Re: Подскажите самый быстрый способ передачи данных между пр
Здравствуйте, Аноним, Вы писали:
А>В чем идея. Есть два приложения: одно от CDialog а другое SDI. А>Приложение от СDialog скачивает файл *.jpg и передает второму его название. А>Второе приложение его отображает. Я попробовал передать текстовую строку с именем файла А>через WM_COPYDATA. Все работает, только за секунду успевает передаться 1-2 сообщения, А>а мне бы хотелось 5-6. (Дело именно в WM_COPYDATA, т.к. поэкспериментировав понял что если это сообщение не А>посылать и делать все в одном приложении, то файлы скачиваются 5-6 раз в секунду-к сожалению А>этот вариант меня не устраивает по-другим соображениям). А>Заранее благодарен
Самый быстрый — pipe, socket.
Re: Подскажите самый быстрый способ передачи данных между пр
я пытался решить другую проблему но думаю что это тебе подойдет... возможно потупит только на соединении но передавать должен шустрее, дополнение там типа СОМ объект так вот зарегить его нада как локальный сервер.
Уверенность, это чувство которое возникает у вас перед тем как вы осознали ситуацию.