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

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

Mailslot [D7, Win2k, WinXP]


_Narayan_ ©   (2003-08-25 18:02:00) 

Ситуация такая:
создал Mailslot ф-цией CreateMailslot
пытаюсь записать в созданный Mailslot ф-цией WriteFile, пользуясь HANDLE, полученный при создании слота.
Результат операции - 0 байт затисано
Вопрос такой, как записать?


_Narayan_   (2003-08-25 19:12:00) [1]

но ведь слот создаётся

MailSlotHandle:=CreateFile(pchar("\\"+RealHostName+"\mailslot\messngr" ),GENERIC_WRITE,FILE_SHARE_READ,NIL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMA L,0);


и тут нормально проходит

If ( MailSlotHandle<>INVALID_HANDLE_VALUE ) Then ...


clickmaker   (2003-08-25 19:08:00) [2]

Неверный сетевой путь. Проверь "\\"+RealHostName+"\mailslot\messngr", действительно ли он ведет, куда нужно


_Narayan_   (2003-08-25 19:00:00) [3]

говорит ошибка 53


clickmaker   (2003-08-25 18:44:00) [4]

Ну, в принципе можно и так написать

WriteFile(MailSlotHandle, FinalString[1], Length(FinalString),ResLen,nil);

А что скажет GetLastError сразу после WriteFile ?


_Narayan_   (2003-08-25 18:27:00) [5]

чтения мне не надо, а запись вот


procedure mSendPopup(RealHost,mTo,mFrom,MsgText: String);
var MailSlotHandle: THandle;
ResLen: DWORD;
FinalString, RealHostName: String;
begin
MailSlotHandle:=CreateFile(pchar("\\"+RealHostName+"\mailslot\messngr" ),GENERIC_WRITE,FILE_SHARE_READ,NIL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMA L,0);
If ( MailSlotHandle<>INVALID_HANDLE_VALUE ) Then
Begin
CharToOEM(PChar(mTo),PChar(mTo));
CharToOEM(PChar(mFrom),PChar(mFrom));
CharToOEM(Pchar(MsgText),Pchar(MsgText));
FinalString:=mTo+#0+mFrom+#0+MsgText;
WriteFile(MailSlotHandle,Pointer(PChar(FinalString))^,Length(FinalStri ng),ResLen,nil);
CloseHandle(MailSlotHandle);
end;
end;


clickmaker   (2003-08-25 18:13:00) [6]

Приведи код записи и чтения из слота клиентом


Наверх

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