|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
|||||||||||
Передать строку, между двумя приложениями10.03.2012, 11:46. Показов 8806. Ответов 17
Метки нет (Все метки)
Доброе время суток! Помогите, пожалуйста, решить вопрос: необходимо передать строку, между двумя приложениями, используя функции WinAPI (sendMessage, getMessage, postMessage). Использую IDE Visual Studio 2010 + Qt 4.7.0. были попытки выполнить через COPYDATASTRUCT, пытался создавать переменные в куче, в стеке... результат один - вылет программы-приемника при попытке скастить msg.lparam к определенному типу данных. Привожу один из вариантов кода:
Функция отправки:
0
|
|||||||||||
| 10.03.2012, 11:46 | |
|
Ответы с готовыми решениями:
17
чат между двумя приложениями Обмен данными между двумя приложениями
|
| 10.03.2012, 14:03 | |
|
В MSDN есть же пример Using Data Copy
1
|
|
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
||||||
| 10.03.2012, 17:40 [ТС] | ||||||
|
Не совсем ясно, куда пристегнуть
0
|
||||||
|
|
||||||
| 10.03.2012, 17:47 | ||||||
|
judarical, передавть можно посредством SendMessage.К примеру SendMessage(hWndConsumer,WM_COMMAND,wPar am(к примеру пусть будет 777),lParam);
У приложения клиента парсишь своё послание в WndProc
0
|
||||||
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
|||||||||||
| 10.03.2012, 19:29 [ТС] | |||||||||||
|
-=ЮрА=-, спасибо, за ответ, но мне не нужны другие варианты: есть конкретная задача с двумя конкретными приложениями. Передавать нужно именно строку и именно через функцию sendMessage (postMessage), принимать = через getMessage().Проблема в том, что я перепробовал множество вариантов, но не могу принять во втором приложении строку. Пример кода я привел. Может подскажете, где именно в коде ошибки?
В этом:
0
|
|||||||||||
| 10.03.2012, 19:40 | |
|
0
|
|
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
||
| 10.03.2012, 19:57 [ТС] | ||
|
Я совершенно вдумчиво и разборчиво читал ваш ответ, но вы совершенно не осознали суть моей проблемы. Не нужно ни WndProc, ни прочих "примочек". Жестко: прием через getMessage (как в моем коде, это каприз не мой, а постановщика задачи). Проблема заключается в кастинге lParam. Скорее всего, я либо не так передаю, либо не так принимаю (больше не знаю, на что грешить). Где именно не так - вот вопрос. Перефразирую: есть кусок кода в топике, именно в нем необходимо найти и устранить ошибку (с WinAPI я не совсем дружен, потому прошу совета). Может, кому-то ошибка явно бросится в глаза.
0
|
||
|
|
||||||||||||||||||
| 10.03.2012, 21:03 | ||||||||||||||||||
|
Вот код Sender-а
2
|
||||||||||||||||||
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
|
| 28.03.2012, 19:48 [ТС] | |
|
Ребята, все же, если есть на этом форуме кто-нибудь, кто может подсказать, как передать через postMessage СТРОКУ (не число, не другого типа переменную, а набор char-ов, СТРОКУ!!!, с другими типами передаст даже ребенок), помогите, пожалуйста, очень нужно!!!
С уважением, Евгений
0
|
|
| 28.03.2012, 21:00 | |
|
Не по теме: judarical, займёмся, самому интересно стало...
0
|
|
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
|
| 28.03.2012, 21:18 [ТС] | |
|
Приветствую вас, Юрий!
Благодарю вас за предыдущие попытки мне помочь! Возможно я не смог сформулировать свои мысли в корректной форме в прошлый раз. Нужно было сильнее акцентировать внимание на СТРОКАХ, в этом моя вина))) Передавать и получать сообщения я могу без проблем (я имею ввиду, целые числа). А вот над строкой я наколдовался настолько, что уже голова в этом направлении не варит совсем: все время крэшится при получении мессаджа (). Пишу я все это дело в VS 2010. В качестве инструментария - встроенный Qt. Не спрашивайте, зачем мне это надо - была бы моя воля, давно уже сделал все через QSharedMemory. Как бы тупо это не звучало, мне нужно именно строковое сообщение и именно WinAPI с post, get. Наработки я выкладывал выше (кроме этого пробовал еще по разному изощряться). В общем, на выходе клиента я должен иметь строку (QString, можно ее преобразовать в BSTR и обратно, ну, при желании - в другую сишную строку)... могу расписать код, а также, как и что я им хотел сделать, если это поможет)
0
|
|
| 28.03.2012, 21:59 | |
|
0
|
|
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
||||||||||||||||
| 28.03.2012, 22:10 [ТС] | ||||||||||||||||
|
1) Общаться через файл - не вариант (точнее этот вариант я сам способен реализовать и он тут черезчур костыльный буде, как сааамый запасной))))
2) Технология, я бы сказал "говноклиент-говносервер", потому что в реали даже не знаю, куда такой трэш прикрутить. Вот рабочий код, только с цифрами (припендюрить надо строки сюда): Говноклиент:
0
|
||||||||||||||||
|
|
||
| 28.03.2012, 22:17 | ||
|
Добавлено через 39 секунд Остальное мне не очень нра, сделаю через сокеты ![]() Добавлено через 58 секунд Не по теме: PS:Буду писать под студию, билдер не использую при написании программ
0
|
||
|
5 / 4 / 0
Регистрация: 06.11.2010
Сообщений: 92
|
|
| 28.03.2012, 22:29 [ТС] | |
|
Юрий, дело не совсем так, как вы его себе представляете:
важен не тот факт, что я решу задачу, а важно, КАК я ее решу (ну это долбанное неотъемлемое условие). Других вариантов решения масса, я их готов реализовать сам, но по-другому НЕЛЬЗЯ ((( Если вы тоже, как и я, не знаете, как поменять куски моего кода, чтобы через lparam или wparam корректно передать вместо числа указатель на строку, а потом get-ом получить указатель и считать строку, и чтоб ничего не выкрошилось, то лучше не тратьте ваше драгоценное время, я и так безмерно благодарен вам за внимание к моей проблеме ( В крайнем случае я сделаю передачу через sharedMemory, а post, get-ами буду отсылать сигналы о поступлении нового сообщения (тупой и никчемный костыль, тупее, чем сама задача). Но просто одна мысль, что это возможно реализовать, а у меня все крэшится, не дает мне покоя: безмерно хочется извлечь отсюда опыт и научиться это делать.
0
|
|
|
|
||||||||||||||||
| 29.03.2012, 13:06 | ||||||||||||||||
|
judarical, есть такая поговорка если гора не идёт к Магомету, то Магомет идёт к горе, ну так вот если мы не можем впихнуть строку в 1 параметр, почему бы не передавать данную строку посимвольно?
Вот код продвинутого отправителя
Почему-то не работающий консольный вариант
2
|
||||||||||||||||
|
Модератор
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,241
|
|||||||
| 30.03.2012, 10:32 | |||||||
|
А разве не получится так:
после вызова PostMessage(); Однако я не уверен, что это не вызовет ошибку защиты памяти, т.к. это разные приложения. Добавлено через 4 минуты Окну пришло сообщение WM_SEND и оно снова отправляется этому же окну с теми же параметрами. Мне кажется - это зацикливание.
0
|
|||||||
|
|
|||
| 30.03.2012, 11:15 | |||
|
Добавлено через 2 минуты zss, если есть желание поэксперементировать накинь на SendMessage if и посмотри что ни одно сообщение как бы не отправилось, другое дело PostMessage в Consumere подхватило эти сообщения и поставило в очередьсообщений конкретного окна Consumer (т.е PostMessage рентранслировал сообщения уже в очередь) , но сам SendMessage ни одного сообщения так в очередь и не вклинил. Мне не понятно почему ТС молчит, хоть бы какой то фидбек дал на последний код...
1
|
|||
| 30.03.2012, 11:15 | |
|
Помогаю со студенческими работами здесь
18
Чат между двумя приложениями Общение между двумя приложениями
Обмен между двумя приложениями Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
|
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|