Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
ВнизПередача данных из одной программы в другую через указатели Найти похожие ветки
← →
IceBeerg © (2006-07-19 13:48) [0]Есть две программы, первая запущена. Вторая при запуске опрделяет наличие первой, проделывает некотрую работу и пытается передать данные посредством сообщений 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;
...
как все таки передать из программы в программу строку?
← →
Virgo_Style © (2006-07-19 13:51) [1]Если через сообщения - SendMessage WM_CopyData ?
← →
Ega23 © (2006-07-19 13:51) [2]Ха! Адресные пространства у процессов-то разные...
← →
IceBeerg © (2006-07-19 13:58) [3]
> Ega23 © (19.07.06 13:51) [2]
А чем тогда разместить данные в общей куче? И потом их заиспользовать и убрать?
← →
IceBeerg © (2006-07-19 14:02) [4]Первая программа через
SendMessage
сообщения НЕ получает :( и спользуюPostMessage
, аWM_COPYDATA
cPostMessage
не работает :(
An application must use the SendMessage function to send this message, not the PostMessage function.
← →
medved_68 © (2006-07-19 14:12) [5]
> А чем тогда разместить данные в общей куче?
Боюсь что сие невозможно.
> Первая программа через SendMessage сообщения НЕ получает
Почему??? Если правильно найден дискриптор окна сообщение ДОЛЖНО ПРИЙТИ. Ищи ошибку в перекрытии WndProg окна кому посылаешь сообщение.
З.Ы. Если SendMessage не работает то и PostMessage не будет работать.
← →
Юрий Зотов © (2006-07-19 14:15) [6]> 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:18) [7]
> 2Юрий Зотов
А с Pipe каналом можно провернуть сие???
← →
Юрий Зотов © (2006-07-19 14:21) [8]Чтобы не повторять уже обсуждавшееся:
http://delphimaster.net/view/1-1152681599/
← →
medved_68 © (2006-07-19 14:42) [9]
> Юрий Зотов
Спасибо
← →
IceBeerg © (2006-07-19 15:10) [10]
> З.Ы. Если SendMessage не работает то и PostMessage не будет
> работать.
А вот так вот получается... сначала и пробовал через SendMessage, никак, а птом заменил на PostMessage и за работало! Тогда как раз проверял факт получения первым приложением сообщения от втрого.
2 Юрий Зотов
Спсибо.
И вообще, всем спасибо, буду рыться дальше.
← →
Amoeba © (2006-07-19 16:29) [11]Выслал готовую демку. Может пригодится.
← →
Amoeba © (2006-07-19 16:31) [12]К сожалению, почта не прошла.
<icebeerg@newmail.ru> (mail.newmail.ru: 553 84.204.46.4 temporary blacklisted, contact noc@pochta.ru (84.204.46.4))
← →
Ketmar © (2006-07-19 16:45) [13]>IceBeerg © (19.07.06 15:10) [10]
быстро забыть обо всём остальном и искать баг в своём коде.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.08.06;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.012 c