Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Прошу пример как на Делфи отправить сообщение CreateMAilSlot [D5]


kserg@ukr.net ©   (2002-05-28 10:35:00) 

Привет
Есть необходимость отправит из моей проги сообщение юзерам в сети. Как это сделать через NetMessageBufferSend я нашел пример и смог им воспользоваться, но у меня есть юзеры у котр. стоит Win98, соот-но NetMessageBufferSend здесь не катит.

Народ, дайте пример как из делфей корректно отправить сообщение через CreateMAilSlot ?
А то я с API мало работал и его синтаксис не совсем понятен.
Может кто предложит другое универсальное решение (так чтобы можно было посыть сообщения и с NT и 98)

Спасибо.


LazyCat   (2002-05-28 16:48:00) [1]

Можно всему домену послать, тогда вместо "имя_компа" надо "*" ставить. Должно быть можно, когда копался с этим компонентом пару раз было, что сообщения приходили не только на компутер юзера, но и на все компутеры где он залогинился. А почему это получилось непомню. :(


kserg@ukr.net   (2002-05-28 16:29:00) [2]

спасибо за помощь.

и еще вопросик: можно сообщение кинуть не на имя_компа, а на имя_юзера ?


LazyCat   (2002-05-28 15:38:00) [3]

А, было у меня такое. Ругалось только под NT при вызове CharToOEM. Попробуй заменить в модуле mdMailSlot функцию SendToWinpopup на эту:
Function SendToWinpopup(Server, Reciever, Sender, Msg : String) : Boolean;
var
m,m1 : PChar;
l : integer;
Begin
l := Length(Server)+1;
getmem(m,l);
getmem(m1,l);
StrCopy(m, PChar(Server));
CharToOEM(m,m1);
Server := String(m1);
FreeMem(m,l);
FreeMem(m1,l);

getmem(m,Length(Sender)+1);
getmem(m1,Length(Sender)+1);
StrCopy(m, PChar(Sender));
CharToOEM(m,m1);
Sender := String(m1);
FreeMem(m,Length(Sender)+1);
FreeMem(m1,Length(Sender)+1);

getmem(m,Length(Reciever)+1);
getmem(m1,Length(Reciever)+1);
StrCopy(m, PChar(Reciever));
CharToOEM(m,m1);
Reciever := String(m1);
FreeMem(m,Length(Reciever)+1);
FreeMem(m1,Length(Reciever)+1);

getmem(m,Length(Msg)+1);
getmem(m1,Length(Msg)+1);
StrCopy(m, PChar(Msg));
CharToOEM(m,m1);
msg := String(m1);
FreeMem(m,Length(Msg)+1);
FreeMem(m1,Length(Msg)+1);

Result := SendToMailSlot(Server, wpSlot, Sender+#0+Reciever+#0+Msg);
end;


А на счет этой "\\.\mailslot\data_base"строчки я не уверен, если не ошибаюсь там должно быть только имя компьютера на который отправляешь сообщение.


kserg@ukr.net   (2002-05-28 14:35:00) [4]

подскажи в чем дело.

mdWinPopup1.Send("\\.\mailslot\data_base","kse","kse","177")

эта строка генерит исключение типа Access Violation... in modele user32.dll


LazyCat   (2002-05-28 13:01:00) [5]

На OnMessage вешай свой оброботчик.
А посылать примерно так:

mdWinPopup1.Send(Komu,OtKogo,OtKogo,memo1.Text);


kserg@ukr.net   (2002-05-28 12:38:00) [6]

>LazyCat © (28.05.02 12:13)
у компанента куча функций и не могу сходу понять,
какими можно отправить/получить сообщение,


LazyCat   (2002-05-28 12:13:00) [7]

В component->install component открывай mdMailSlot.pas (так кажеца называеца), и жми инсталл. Должно все заработать. У меня во всяком случае проблем не было.


kserg@ukr.net   (2002-05-28 11:39:00) [8]

>LazyCat © (28.05.02 11:06)
Cпасибо, дарагой :-)
уже скачал, но возникли сложности: в архиве PAS под D2/D3
а как перекомпилить его под D5?
(сам я еще мало знаю D)


Кстати, на torry.ru выставлена устаревшая вер.1,14
а на родной странице http://www.djernaes.dk/martin
выставлена вер.1,15 - в read_me написало, что удалена ошибка утечки памяти.


LazyCat   (2002-05-28 11:06:00) [9]

На torry.ru поищи компонент mdWinPopUp. Он нормально работает и на NT и на 9х.


Наверх

Титульная страница Поиск, карта сайта Написать письмо