Форум: "Потрепаться";
Текущий архив: 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