Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.012 c
3-1148978769
July
2006-05-30 12:46
2006.08.06
длина запроса


3-1149163950
Morgan128
2006-06-01 16:12
2006.08.06
Использование TQuery


4-1145014299
Sinka
2006-04-14 15:31
2006.08.06
Задний фон на TCustomObject (в частности на TTreeView)


15-1151928395
СБСОФТ
2006-07-03 16:06
2006.08.06
СБСОФТ: Вакансии (программист Delphi Firebird)


15-1152394014
PATRIOT
2006-07-09 01:26
2006.08.06
Как получить звук на входе и воспроизвести его на выходе





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский