Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Existiert Mailslot? / Nachrichtendienst über Mailslots (https://www.delphipraxis.net/87144-existiert-mailslot-nachrichtendienst-ueber-mailslots.html)

Luckie 23. Feb 2007 22:18


Existiert Mailslot? / Nachrichtendienst über Mailslots
 
Ich verschicke mit folgendem Code Nachrichten über den Nachrichtendienst:
Delphi-Quellcode:
function SendToMailSlot(const Machine, Slot, MsgText: string): Boolean;
var
  CompleteSlot     : string;
  hSlot            : THandle;
  BytesWritten     : DWORD;
begin
  BytesWritten := 0;
  CompleteSlot := '\\' + Machine + '\mailslot\' + Slot;
  hSlot := CreateFile(PChar(CompleteSlot), GENERIC_WRITE, FILE_SHARE_READ, nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
  if hSlot <> INVALID_HANDLE_VALUE then
  begin
    if (WriteFile(hSlot, Pointer(PChar(MsgText))^, length(MsgText), BytesWritten, nil)) and (BytesWritten =
      length(MsgText)) then
    begin
      Result := True;
    end
    else
      Result := False;
    CloseHandle(hSlot);
  end
  else
    Result := False;
end;
Leider liefert die Funktion auch True, wenn der Nachrichtendienst deaktiviert ist und der Mailslot eigentlich nicht existiert.

sakura 24. Feb 2007 02:14

Re: Existiert Mailslot?
 
Mailslots werden nicht auf Existenz geprüft. Wenn Du sicher gehen musst, dass der Empfänger existiert/die Nachricht erhält, dann setze auf Pipes. Das Handling ist identisch.

...:cat:...

Luckie 24. Feb 2007 02:54

Re: Existiert Mailslot?
 
Nein, es geht schon um den Nachrichtendienst. Dann werde ich wohl nicht umhinkommen und prüfen müssen, ob der Nachrichtndiesnt gestartet ist.

Luckie 24. Feb 2007 18:27

Re: Existiert Mailslot?
 
Muss der Nachrichtendienst eigentlich auf dem Zielrechner laufen oder auf dem lokalen Rechner oder auf beiden?

hedie 24. Feb 2007 18:39

Re: Existiert Mailslot?
 
auf beiden

Luckie 24. Feb 2007 19:15

Re: Existiert Mailslot?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Mist, diese Abfrage scheitert wahrscheinlich wieder an XP Home. :wall:

Könnte mal bitte jemand versuchen eine Nachricht an einen Rechner zu schicken mit XP Professional oder Windows 2000 mit deaktivierten Nachrichtendienst? Und zwar einmal als Administrator und einmal mit eingeschränkten Rechten. Und dann noch mal ohne mit net use eine Freigabe zu erstellen und einmal mit. Das wäre nett. Danke. Programm im Anhang.

Christian Seehase 24. Feb 2007 21:58

Re: Existiert Mailslot? / Nachrichtendienst über Mailslots
 
Moin Michael,

getestet unter XP Pro, W2K und Vista, jeweils mit einem Account mit administrativen, und mit normalen Rechten, erscheint immer folgende Meldung:

---------------------------
NetSend
---------------------------
Messenger service is not running on <RECHNERNAME>.



In order to send messages with this program

the Messenger service must be running.
---------------------------
OK
---------------------------

Luckie 25. Feb 2007 22:11

Re: Existiert Mailslot? / Nachrichtendienst über Mailslots
 
Ok, besten Dank. :thumb:

Dann haben wir wieder das XP-Home-eingeschränkte-Netzwerkfunktionalitäts-Problem. Dann kann ich mein Programm so lassen. Ich werde es demnächst als OpenSource hier im Forum einstellen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz