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