![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Передача данных из одной программы в другую через указатели
IceBeerg © (2006-07-19 13:48:00)Есть две программы, первая запущена. Вторая при запуске опрделяет наличие первой, проделывает некотрую работу и пытается передать данные посредством сообщений windows. Так вот первая программа сообщение получает, адрес указателя получает, но данных по этому адресу нет...
Отсылаю данные:
...
wnd:=FindWindow('TTestOpenForm','TestOpenForm');
If wnd<>0 Then
Begin
WParam:=Pointer(GlobalAlloc(GPTR,SizeOf(DataBuf)));//DataBuf:String
WParam^:=DataBuf;//WParam:^String
PostMessage(wnd,wm_Data,Integer(@WParam),0);//const wm_Data=wm_User+256
Halt;
End;
...
Пытаюсь получить данные (в перекрытом onMessage):
...
If Msg.message=wm_Data Then
Begin
PWParm:=Ptr(Msg.wParam);//PWParm:^String
Data:=PWParm^;//Data:String <- ПУСТО!!!
...
End;
...
как все таки передать из программы в программу строку?
Ketmar (2006-07-19 16:45:00) [1]>IceBeerg © (19.07.06 15:10) [10]
быстро забыть обо всём остальном и искать баг в своём коде.
Amoeba (2006-07-19 16:31:00) [2]К сожалению, почта не прошла.
<icebeerg@newmail.ru> (mail.newmail.ru: 553 84.204.46.4 temporary blacklisted, contact noc@pochta.ru (84.204.46.4))
Amoeba (2006-07-19 16:29:00) [3]Выслал готовую демку. Может пригодится.
IceBeerg (2006-07-19 15:10:00) [4]
> З.Ы. Если SendMessage не работает то и PostMessage не будет
> работать.
А вот так вот получается... сначала и пробовал через SendMessage, никак, а птом заменил на PostMessage и за работало! Тогда как раз проверял факт получения первым приложением сообщения от втрого.
2 Юрий Зотов
Спсибо.
И вообще, всем спасибо, буду рыться дальше.
medved_68 (2006-07-19 14:42:00) [5]
> Юрий Зотов
Спасибо
Юрий Зотов (2006-07-19 14:21:00) [6]Чтобы не повторять уже обсуждавшееся:
http://delphimaster.ru/cgi-bin/forum.pl?id=1152681599&n=0
medved_68 (2006-07-19 14:18:00) [7]
> 2Юрий Зотов
А с Pipe каналом можно провернуть сие???
Юрий Зотов (2006-07-19 14:15:00) [8]> IceBeerg © (19.07.06 13:58) [3]
См. CreateFileMapping. Но с WM_COPYDATA получится проще.
> IceBeerg © (19.07.06 14:02) [4]
> Первая программа через SendMessage сообщения НЕ получает
Почему? Должна получать. WM_COPYDATA для того и существует. Оно же работает? Работает.
medved_68 (2006-07-19 14:12:00) [9]
> А чем тогда разместить данные в общей куче?
Боюсь что сие невозможно.
> Первая программа через SendMessage сообщения НЕ получает
Почему??? Если правильно найден дискриптор окна сообщение ДОЛЖНО ПРИЙТИ. Ищи ошибку в перекрытии WndProg окна кому посылаешь сообщение.
З.Ы. Если SendMessage не работает то и PostMessage не будет работать.
IceBeerg (2006-07-19 14:02:00) [10]Первая программа через
SendMessageсообщения НЕ получает :( и спользуюPostMessage, аWM_COPYDATAcPostMessageне работает :(
An application must use the SendMessage function to send this message, not the PostMessage function.
IceBeerg (2006-07-19 13:58:00) [11]
> Ega23 © (19.07.06 13:51) [2]
А чем тогда разместить данные в общей куче? И потом их заиспользовать и убрать?
Virgo_Style (2006-07-19 13:51:00) [12]Если через сообщения - SendMessage WM_CopyData ?
Ega23 (2006-07-19 13:51:00) [13]Ха! Адресные пространства у процессов-то разные...