| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > передача текста другому приложению SendMessage() |
| Автор: wallstreet 31.5.2012, 12:59 |
| Всем добрый день. Собственно суть моей задачи сводится к освоению коммуникации двух приложений разных процессов путем передачи сообщения SendMessage(). Таким образом я создал два приложения (Sender и Acceptor) в одном из которых (Sender) происходит ввод текста пользователем в едит бокс и передача его другому (Acceptor), которое его принимает и выводит в элемент управления статик текст. Проблема заключается в том, что передаю я то что ввел, а принимаю иероглифы. Есть предположение что обработка сообщения WM_COPYDATA работает только с ASCII кодировкой. ссылки для скачивания: =>http://zalil.ru/33352189 http://zalil.ru/33352200 вобщем буду рад любой подсказке |
| Автор: DarkProg 31.5.2012, 13:44 | ||||
В Delphi есть специальная функция, SendTextMessage, реализация её вот такая
На стороне принимающего приложения нужно определить структуру(код делфи, но перевести на структуру не так сложно)
И принимать сообщение типа TTextMessage. Извиняюсь, что не код на C, но думаю всё получится. |
| Автор: feodorv 31.5.2012, 14:08 | ||||||
| Вытяну код из многомегабайтных архивов. Sender
Acceptor
Что это такое??? И это Вы посылаете? Это не то, что Вы ввели. То, что Вы ввели, находится здесь: &text[0]. |
| Автор: feodorv 31.5.2012, 18:58 | ||
Там есть ещё немного мелочёвки))))
При каждом WM_COPYDATA для p будет выделяться память (а прошлая выделенная - теряться). Зачем её вообще выделять, если выше есть объявление Достаточно просто проверить, что данных пришло не слишком много, и они все умещаются в text. p, кстати, так нигде и не высвобождается... Далее. Здесь размер присланного ещё как-то учитывается: Вот тут - 256 символов, и точка: |
| Автор: wallstreet 5.6.2012, 16:16 | ||
| Благодарю за подсказку. Незнаю правильно или нет, но переделал проблемный кусок и пока все работает как надо.
Теперь необходимость в выделении памяти отпала, как и в ее удалении. |
| Автор: volatile 5.6.2012, 23:34 | ||||
Если данных пришло больше 256, зачем посылать мусор из text[] в IDC_STATIC ? Зачем вообще столько лишних движений ?
|
| Автор: wallstreet 6.6.2012, 09:57 |
| О да, супер! |