Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.026 c
1-1150972456
Старик
2006-06-22 14:34
2006.08.06
Различные варианты выгрузки приложения из памяти


3-1148966505
WG
2006-05-30 09:21
2006.08.06
SQL выборка из таблицы с датами последнего изменения


2-1152902215
Борщ
2006-07-14 22:36
2006.08.06
картинка как progressbar


2-1153302763
novill
2006-07-19 13:52
2006.08.06
Обработчик один - классы объектов разные, как объявить?


8-1139763034
Admeral
2006-02-12 19:50
2006.08.06
Прозрачный фон?




   Наверх