Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.16;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.031 c
8-1077020922
Gast1
2004-02-17 15:28
2004.05.16
Как создать анимацию для кнопки


1-1083038435
RH
2004-04-27 08:00
2004.05.16
Создать каталог


14-1082646601
Валентин Сушняк
2004-04-22 19:10
2004.05.16
Посоветуйте компонент или научите!


4-1079726384
i-s-v
2004-03-19 22:59
2004.05.16
Можно ли c помощью SendMessage передавать строку


1-1083291386
CyBeR
2004-04-30 06:16
2004.05.16
Переход другую форму с помощью закладок