Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Вниз

Обмен сообщениями между приложениями   Найти похожие ветки 

 
vtur ©   (2007-02-01 13:56) [0]

Уважаемые коллеги.
Может кто-то знает, как зарегистрировать в ОС Windows некое сообщение (его идентификатор, естественно), что-то вроде

 WM_GETVC = WM_APP + 13;

константа WM_APP = $8000; (файл Messages.pas)

с целью организации межпрограммного обмена сообщениями.
Как создавать обработчики сообщений я знаю.


 
Сергей М. ©   (2007-02-01 13:58) [1]

см. RegisterWindowMessage()


 
Сергей М. ©   (2007-02-01 13:59) [2]

А почему с помощью именно механизма сообщений ?


 
vtur ©   (2007-02-01 14:41) [3]

RegisterWindowMessage() не годится, т.к. эта процедура регистрирует
сообщение в системе только на время сессии, кроме того это сообщение
не передается другим приложениям, запущенным автономно (как сервисы,
например).
Возможно я и ошибаюсь, но у меня эта технология работала только для
многопоточных приложений, т.е. когда основное приложение посылало
и получало сообщения от порожденных потоков, но многопоточность
не решала других проблем.
Я попробовал применить обмен по протоколу UDP (при помощи компонент
TIdUDPClient, TIdUDPServer, TIdAntiFreeze), но обмен по нему не всегда
стабилен (сообщение источником формируется, а в приемник не
поступает, - возможно из-за рассинхронизации).
Если подскажете другой способ - буду только рад!


 
Сергей М. ©   (2007-02-01 15:14) [4]


> RegisterWindowMessage() не годится, т.к. эта процедура регистрирует
> сообщение в системе только на время сессии


А зачем тебе постоянная регистрация ?


> это сообщение
> не передается другим приложениям, запущенным автономно (как
> сервисы,
> например)


Да глупости.


> Если подскажете другой способ - буду только рад


NamedPipes, FileMapping


 
tesseract ©   (2007-02-01 15:23) [5]


> NamedPipes,


Некоторые на тормознутость жалуються.  Забыл ещё про IP.


 
DiamondShark ©   (2007-02-01 15:43) [6]


> А зачем тебе постоянная регистрация ?

Телепатор подсказывает, что для того, чтобы можно было написать

procedure WMMyCoolMessage(var M: TMessage); message WM_MYCOOLMESSAGE;

Правда, всё равно не понятно, чем при этом не угодили WM_APP + 123


> кроме того это сообщение
> не передается другим приложениям, запущенным автономно (как
> сервисы,
> например).

Все сообщения, независимо от кода сообщения, прекрасно передаются любым приложениям.
Если, разумеется, те приложения реализуют выборку сообщений и реакцию на них.


 
Сергей М. ©   (2007-02-01 16:01) [7]


> tesseract ©   (01.02.07 15:23) [5]
>
>
> > NamedPipes,
>
>
> Некоторые на тормознутость жалуються.


Угу. Особливо - разработчики UNIX.


 
Игорь Шевченко ©   (2007-02-01 18:08) [8]

Все сообщение передаются потокам приложений, использующих один и тот же десктоп.


 
vtur ©   (2007-02-01 18:18) [9]

бог с ней, с регистрацией...
может кто-то знает, как передать приложению сообщение расширенной
структуры, что-то типа
SendMessage(var Msg: TMyMessage; sizeof(TMyMessage)),
а не устаревшие
PostMessage(HWND_BROADCAST;Msg: Cardinal; WParam, LParam: Longint)
SendAppMessage(Msg: Cardinal; WParam, LParam: Longint)


 
reonid ©   (2007-02-01 19:05) [10]

2vtur ©   (01.02.07 18:18) [9]
>может кто-то знает, как передать приложению сообщение расширенной структуры

Например, используя WM_COPYDATA,
расшаренную память (CreateFileMapping/MapViewOfFile) или сокеты...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.133 c
1-1170534006
Express
2007-02-03 23:20
2007.03.25
Как перехватить сообщение об открытие MDI-формы??


11-1151791408
Александра
2006-07-02 02:03
2007.03.25
dll : вторая форма и выгрузка.


15-1172485912
Slimer
2007-02-26 13:31
2007.03.25
Плохо работает с компа на телек


1-1170172428
RASkov
2007-01-30 18:53
2007.03.25
Ярлык


6-1160399274
Wapo
2006-10-09 17:07
2007.03.25
размер не прочитанных даных в INDY





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский