Форум: "Основная";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
ВнизПередать строку через PostMessage Найти похожие ветки
← →
Lucefer (2006-01-26 11:33) [0]Вопрос такой. Есть поток и приложение, мне из потока надо послать некое сообщение PostMessage(Application.MainForm.Handle, WM_USER+123, 0, 0); и при этом передать некую текстовую строку в основную программу. Как это сделать правильно?
Как вариант я могу выделить память по getmem, записать туда информацию, а потом как-то передать указатель на эту область памяти через параметры сообщения.
← →
wal © (2006-01-26 11:36) [1]
> Есть поток и приложение
Поток в том же самом приложении? Если да, то
> Как вариант я могу выделить память по getmem, записать туда
> информацию, а потом как-то передать указатель на эту область
> памяти через параметры сообщения.
Только память потом освободить не забудь.
← →
Digitman © (2006-01-26 11:37) [2]
> Как вариант я могу выделить память по getmem, записать туда
> информацию, а потом как-то передать указатель на эту область
> памяти через параметры сообщения
Ну так и сделай.
Не худший, надо сказать, способ.
Главное - контролировать время жизни инф-ции, ссылка на которую передается ..
← →
Гавриил, архангел (2006-01-26 11:40) [3]Если в пределах одного приложения - то передавай в lParam указатель на строку.
Если приложения разные - то не WM_USER+123 а WM_COPYDATA.
Если строка не одна а целый блок то лучше использовать named pipes.
← →
Leonid Troyanovsky © (2006-01-26 13:53) [4]
> Digitman © (26.01.06 11:37) [2]
> Не худший, надо сказать, способ.
> Главное - контролировать время жизни инф-ции, ссылка на
> которую передается ..
Способ c GetMem, скажем, не очень.
Ну, а для контроля времени жизни нужен не Post, а
SendMessage (.., WM_USER, 0, LParam(@s {:String})).
Т.е., принимающий делает с PString(msg.LParam)^,
все, что ему требуется.
--
Regards, LVT.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.02.26;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c