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

Вниз

Обмен Сообщениями !   Найти похожие ветки 

 
DoG ©   (2004-04-24 14:07) [0]

Здравствуйте !

Подскажите плиз, как реализовать обмен данными между двумя своими придложениями ?

Например у мнея есть две проги и одна должна посылать другой некоторые данные (хендлы и др) а другая должна их принимать и соотв использовать их там как нибудь...и посылать другой ответные значения и т.д.

Вот как вот ето реализовать ?


 
Polevi ©   (2004-04-24 14:23) [1]

SendMessage, но хендлы так посылать не надо


 
DoG ©   (2004-04-24 14:34) [2]

А как хэндлы посылать ?
И что этот SendMessage как мне его ловить на другой стороне ?


 
Polevi ©   (2004-04-24 14:36) [3]

message F1


 
DoG ©   (2004-04-24 16:27) [4]

>message F1
И что ето такое ?
Если хелп то я там уже был, не ужели не догадаться, если человек ползет на форум, явно в хелпе он уже был и ничего не понял !
Ну вот етот SendMessage:
LRESULT SendMessage(

   HWND hWnd, // handle of destination window
   UINT Msg, // message to send
   WPARAM wParam, // first message parameter
   LPARAM lParam  // second message parameter
  );
Его я понимаю, НО что мне указывать в UINT Msg и в остальных двух
если я передаю цифры или тектс ! И как мне поймать то что я отправил этим способом из одного приложения, в другом, ЧТО ТАМ НАДО НАПИСАТЬ ?


 
evvcom ©   (2004-04-24 17:28) [5]


> UINT Msg

номер, идентификатор сообщения, который для передачи между приложениями проще всего получить, зарегистрировав сообщение через RegisterWindowMessage. Цифры, если их немного, можно передать через параметры wParam и lParam, если же много или тексты, то тогда, например, через CreateFileMapping/OpenFileMapping и дальше MapViewOfFile. Получить в другом приложении, переписав WndProc того окна в которое посылается сообщение (это скорее всего главное).


 
DoG ©   (2004-04-24 17:35) [6]

Что то я окончательно запутался !

Можно мне элементарный пример написать... типа вроде первое
приложение отправляет сообщение второму Hello а второе принимает его и ставит его себе в заголовок !
Тогда мне сразу станет понятно(как сообщение зарегать,переписать WndProc и т.д.) !


 
Polevi ©   (2004-04-24 17:40) [7]

> [4] DoG ©   (24.04.04 16:27)
>ЧТО ТАМ НАДО НАПИСАТЬ ?
если бы ты смотрел хелп, ты бы увидел там нечто вроде

procedure MyMessage(var Msg:TMessage);message WM_USER+1;

так что не надо ляля что смотрел, а писать целиком пример за тебя мне лень


 
Polevi ©   (2004-04-24 17:45) [8]

ааа, так тебе видимо целиком на API надо ? чтобы место занимало мало, да ?
ну тогда тебе понадобится хелп на GetMessage, WndProc, CreateWindow.. вообщем много чего
тем более с помощью SendMessage строку в другой процесс не так просто передать, еще почитай хелп на WM_COPYDATA

мдя.. тогда уж тебе проще наверно NamedPipe использовать, короче будет


 
evvcom ©   (2004-04-24 17:47) [9]

Что сложного? RegisterWindowMessage вызывается всего с одним простейшим параметром - уникальным текстовым именем сообщения, возвращает ID сообщения. Если 2 приложения используют при вызове RegisterWindowMessage одно и то же имя, то получают один и тот же ID.
Как переписать WndProc посмотри, как это делает Borland, например, в TCustomForm.WndProc. Исходники-то есть?
Сначала передай просто одно или два числа через wParam и lParam. Получится, тогда будешь с передачей строк разбираться (т.е. с FileMapping). Пока разбираешься, куча вопросов отпадет сама собой.


 
GanibalLector ©   (2004-04-24 17:56) [10]

получатель:

procedure ReceiveMessage (var Msg: TMessage);
message WM_COPYDATA;
...
procedure TFormReceive.ReceiveMessage;
var
pcd: PCopyDataStruct;
begin
pcd := PCopyDataStruct(Msg.LParam);
Caption := PChar(pcd.lpData);
end;

отправитель:

procedure TFormXXX.Button1Click(Sender: TObject);
var
cd: TCopyDataStruct;
begin
cd.cbData := Length(Edit1.Text) + 1;
cd.lpData := PChar(Edit1.Text);
SendMessage(FindWindow("TFormReceive", nil), WM_COPYDATA, 0, LParam(@cd));
end

Только ТУТ без RegisterWindowMessage.Правильнее конечно будет через нее...


 
Polevi ©   (2004-04-24 18:08) [11]

> [10] GanibalLector ©   (24.04.04 17:56)
молодец, не поленился, тока скорее всего TFormReceive автора ветки не устроит, ему на API надо, если я правильно понял
по крайней мере [3] он проигнорировал


 
Александр Спелицин ©   (2004-04-24 22:43) [12]

MSDN -> Interprocess Communications


 
Nick Denry ©   (2004-04-25 00:20) [13]

Смотри пайпы. они попроще будут, да и пофункциональнее: бОльшие объемы данных и т.д.


 
Игорь Шевченко ©   (2004-04-25 00:21) [14]

ЛЮБИТЕ DEMOS - ИСТОЧНИК ЗНАНИЙ (извиняюсь за крик, наболело уже)

Program Files\Borland\Delphi\Demos\IpcDemos

#ifdef FLAME

Почему авторы вопросов не удосуживаются включать свою голову прежде чем чего-то хотеть от незнакомых людей на форуме ?
Для них Borland написал много примеров, целых 227 каталогов и 1800 с лишним файлов, для них написан Help, для них существует Яндекс и прочие поисковые системы, так нет, из дня в день задаются тупые вопросы и требования халявы.

#endif


 
Nick Denry ©   (2004-04-25 13:20) [15]

2>Игорь Шевченко (с)

А помоему, как раз классический пример отсутсвия базовых зн....


 
DoG ©   (2004-04-25 14:09) [16]

begin

Знаешь я промолчу про базовые знания, что ты имеешь ввиду под  этим... И ВОБЩЕ КАКИЕ ЗНАНИЯ У ТЕБЯ БАЗОВЫЕ ! Для кого-то они базовыеб а для др не базовые, ДЛЯ ОДНИХ ТЫ ГУРУ А ДЛЯ ДР ТЫ ПОЛНЫЙ ЛОХ, это понятие расплывчато ! И даже такой как ты со своими не базовыми знаниями когда-н сядет в лужу своей жопу и другой будет писать >А помоему, как раз классический пример отсутсвия базовых зн....

end;


 
Nick Denry ©   (2004-04-25 16:29) [17]

И ВОБЩЕ КАКИЕ ЗНАНИЯ У ТЕБЯ БАЗОВЫЕ ! Для кого-то они базовыеб а для др не базовые, ДЛЯ ОДНИХ ТЫ ГУРУ А ДЛЯ ДР ТЫ ПОЛНЫЙ ЛОХ, это понятие расплывчато ! И даже такой как ты со своими не базовыми знаниями когда-н сядет в лужу своей жопу и другой будет писать >

Вообще-то, то я не кричал, что знаю все-все-все. Да я бывает и сажусь в лужу, задаю вопросы и другие мне на них отвечают (и даже иногда А помоему, как раз классический пример отсутсвия базовых зн...... Но редко :)))) Но это не повод оскорблять человека... И уж тем более не повод  отсутсвие знаний базовых функций и принципов АПИ (Что подтвержадется твоими вопросами:

А как хэндлы посылать ?
И что этот SendMessage как мне его ловить на другой стороне ?)
... Проблемы на твоей стороне... Лучше бы прислушался к тому, что тебе отвечают другие, вместо того, чтобы поливать здесь грязью....

Удачи :)))


 
Nick Denry ©   (2004-04-25 16:44) [18]

Его я понимаю, НО что мне указывать в UINT Msg и в остальных двух
если я передаю цифры или тектс ! И как мне поймать то что я отправил этим способом из одного приложения, в другом, ЧТО ТАМ НАДО НАПИСАТЬ ?


Кстати, эта строчка красноречивее....


 
McSimm ©   (2004-04-26 12:02) [19]

Б. Окуджава. "Песенка Мальвины"
...
Ах, если б Карабас с грамматикой был дружен
И книжки умные листал
Его свирепый нрав ему бы был не нужен
Он нас бы мучить перестал.
...


 
Undert ©   (2004-04-26 12:16) [20]

File mapping


 
Юрий Зотов ©   (2004-04-26 12:39) [21]

> DoG

Хотел написать подробный ответ. Но прочитал ветку - и передумал.
Как Вы считаете - почему?



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

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

Наверх




Память: 0.5 MB
Время: 0.038 c
1-1083241391
ЁПРСТ
2004-04-29 16:23
2004.05.16
Как подключить RxLib?


14-1083132720
Pomoshnik
2004-04-28 10:12
2004.05.16
Delphi


14-1082773743
Думкин
2004-04-24 06:29
2004.05.16
С днем рождения! 24 апреля.


6-1080200333
nester
2004-03-25 10:38
2004.05.16
Как программно добавить эккаунт в OutlookExpress


14-1082626816
}|{yk
2004-04-22 13:40
2004.05.16
22 апреля - день рождения В.И.Ульянова





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