![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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]
Приведи код записи и чтения из слота клиентом