Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.06;
Скачать: CL | DM;

Вниз

Передача данных из одной программы в другую через указатели   Найти похожие ветки 

 
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 c PostMessage не работает :(
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.04 c
2-1151856821
МишаК
2006-07-02 20:13
2006.08.06
программирование


2-1153297247
SergP.
2006-07-19 12:20
2006.08.06
Настройки дельфи и try except end...


2-1152808926
Drug1985
2006-07-13 20:42
2006.08.06
Непонятная ошибка. Объясните кто понимает...


2-1152881093
MixAnOL
2006-07-14 16:44
2006.08.06
Как узнать вне Thread а, что он закончил свое выполнение?


2-1152859528
T54
2006-07-14 10:45
2006.08.06
Добавление bmp к exe . . .