Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/160: Рейтинг темы: голосов - 160, средняя оценка - 4.81
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744

SendMessage (Передать строку другому приложению)

01.10.2011, 10:22. Показов 32140. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла проблема при передаче строки из одного приложения в другое.
(XE)

Передача(1-й вариант (рабочий))
C++
1
2
char* str = "C:\\example.mp3";      
SendMessage(h, WM_GETSTRING ,(WPARAM)str, NULL);
Передача(2-й вариант (цель)) // Призывает Access Violation)) с StrCopy тоже самое!
C++
1
2
3
AnsiString S = "C:\\example.mp3";
char* str = S.c_str();
SendMessage(h, WM_GETSTRING ,(WPARAM)str, NULL);
Прием:
C++
1
2
3
4
5
void __fastcall TMainForm::OnGetString(TMessage& Msg)
{
    char* Str = (char*)Msg.WParam;
    Label1->Caption = String(Str);
}
То есть: Требуется передать переменную S!
Заранее благодарю за любые советы!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.10.2011, 10:22
Ответы с готовыми решениями:

Передать текст другому приложению
Есть программа, в ней есть текстовый компонент Мемо, задача стоит такая: 1. Нужно передать текст из этого компонента в другую...

Передача массива байтов по UDP протоколу другому приложению
Как в BorlandС++ Builder6 решается вопрос обмена информацией с другими приложениями (не обязательно созданными в С++ Builder)? Например,...

Как отослать текстовое сообщение другому приложению. .SendMessage. WM_COPYDATA. Delphi
Всем привет. Есть такая программа, отправляющая текстовое сообщение другой программе через sendmessage. Программа отправитель: ...

25
1 / 1 / 1
Регистрация: 29.08.2013
Сообщений: 48
17.03.2014, 12:01
Студворк — интернет-сервис помощи студентам
Я передаю иначе.
C++
1
2
UnicodeString MyStr = "привет";
PostMessage(Application->Handle, WM_USER + 100, 0, (LPARAM)MyStr.c_str() );
а на принимающей стороне ApplicationEvents слушает месаги.
C++
1
2
3
4
5
if(Msg.message == WM_USER+100)
{
Label1->Caption = (WideChar*)Msg.lParam;
Handled = true;
}
0
Волшебник
 Аватар для Rapsod
65 / 64 / 7
Регистрация: 21.11.2009
Сообщений: 319
17.03.2014, 15:02
Цитата Сообщение от Кирилл2100 Посмотреть сообщение
Я передаю иначе.
C++
1
2
UnicodeString MyStr = "привет";
PostMessage(Application->Handle, WM_USER + 100, 0, (LPARAM)MyStr.c_str() );
а на принимающей стороне ApplicationEvents слушает месаги.
C++
1
2
3
4
5
if(Msg.message == WM_USER+100)
{
Label1->Caption = (WideChar*)Msg.lParam;
Handled = true;
}
Может нужно указать какому именно окне нужно отправить сообщение?
C++
1
PostMessage(FindWindowA(NULL, "WindowName"), WM_USER+100, 0, (LPARAM)MyStr.c_str() );
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33480 / 21578 / 8250
Регистрация: 22.10.2011
Сообщений: 37,041
Записей в блоге: 12
17.03.2014, 17:02
Может, надо перестать кормить некропостера? Теме три года, кому это надо сейчас?
0
1 / 1 / 1
Регистрация: 29.08.2013
Сообщений: 48
20.03.2014, 08:30
Это нужно было мне. Нигде ничего полезного не нашел. Потом нашелся простой и удобный способ. Я его выложил сюда,чтобы на этом форуме был полезный совет.

То что выложил я - рабочий вариант.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33480 / 21578 / 8250
Регистрация: 22.10.2011
Сообщений: 37,041
Записей в блоге: 12
20.03.2014, 11:56
Цитата Сообщение от Кирилл2100 Посмотреть сообщение
рабочий вариант.
Бред это, а не вариант. Даже если передавать строку из одного потока в другой (в пределах одного и того же процесса), PostMessage затолкает сообщение в очередь, и не будет ничего ждать, так что пока
Цитата Сообщение от Кирилл2100 Посмотреть сообщение
на принимающей стороне ApplicationEvents
получит это сообщение, MyStr уже давно может указывать "в космос", и получишь ты не то, что отправлял, а то, что случайно оказалось там, где раньше была строка.

Я уж не упоминаю, что строка, которую ты передаешь - она в АП другого процесса (первый пост внимательно читал? Задача - не передать данный из потока в поток, а передать между процессами), и твой код просто вылетит с AV... Но ты продолжай считать, что это простой и удобный (а главное - рабочий) способ. Так тоже удобнее (см. соседнюю тему), самому думать не придется...
0
1 / 1 / 1
Регистрация: 29.08.2013
Сообщений: 48
25.03.2014, 07:40
Как скажешь
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2014, 07:40

Передать нажатие клавиши другому приложению
предположим, что по нажатию F5 в программе выполняются определенные действия. как передать из моей программы в эту нажатие F5?

Передача команд другому приложению.
Всем доброго времени суток. Я так сказать новичок в Делфи, и у меня есть вопрос. Как сделать следующее: 1)Есть моя программа. ...

Передача данных другому приложению
Появилась потребность передавать данные между двумя отдельными приложениями. Как можно такое реализовать. Т.е. надо, чтобы из одного...

Передача строки другому приложению
Итак дано: Два приложения могут общаться между собой посредством системных сообщений. То есть есть возможность от одного приложения...

Отправка события другому приложению
Суть такова. Есть приложение Б. Оно существует как отдельное, созданное не мной. Нужно подменить отправляемые операционной системой ему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
26
Ответ Создать тему
Новые блоги и статьи
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru