Главная страница
    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.043 c
15-1172460498
Slider007
2007-02-26 06:28
2007.03.25
С днем рождения ! 26 февраля


2-1172759434
iviom
2007-03-01 17:30
2007.03.25
TRichEdit


2-1172906780
Windows
2007-03-03 10:26
2007.03.25
Piette компоненты


2-1172965852
arturich
2007-03-04 02:50
2007.03.25
Опять про автозаполнение формы через webbrowser


1-1170245684
alexey_mas
2007-01-31 15:14
2007.03.25
помогите с обработкой события в run-time





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