Einzelnen Beitrag anzeigen

J Kadison

Registriert seit: 8. Sep 2007
Ort: Ebertsheim
96 Beiträge
 
Delphi 7 Personal
 
#1

Net Send Mailslot selbst verarbeiten!

  Alt 25. Aug 2009, 21:12
Hallo!

Ich wollte ein Programm haben, welches sich hinter NetSend legt (oder evtl dieses deaktivert und ersetzt) um die einkommenden Nachrichten abzufangen. Im moment fange ich diese sehr unschön mit einem Timer ab und lese das aktuelle Handle aus.

Wirklich unschön

Jetz habe ich gesehen, windows schickt dies an sogenannte Mailslots.
Diese kann ich ja auch selbst erstellen. ?!

so weit ich das jetzt herausgefunden habe, benötige ich folgenden Mailslot:

'\\.\mailslot\messngr'

So!

erstellen tu ich diesen hiermit:
Delphi-Quellcode:
Procedure TMailSlot.CreateMailSlot;
var
  aPath : PCHAR;
Begin
  aPath := '\\.\mailslot\messngr';
  fHandle := CreateMailslotA(aPath, 0, MAILSLOT_WAIT_FOREVER, nil);
End;

(Stimmt das bis jetzt noch oder gibt es eine bessere/richtigere Lösung?)


So! Mein Problem ist jetzt allerdings,

Wie rufe ich denn jetzt die Informationen ab, ob etwas angekommen ist?


Habe hierzu folgenden QT gefunden:

Delphi-Quellcode:
procedure TMailSlot.Execute;
Var
  aSize : cardinal;
  fMaxLength: cardinal;
begin
  While Not Terminated Do
  Begin
    SetLength (fMessage, fMaxLength); // fMessage ist ein privates String-Feld...
    if ReadFile(fHandle, PChar(fMessage)^, fMaxLength, aSize, nil) Then
    Begin
      If not terminated Then
      Begin
       SetLength (fMessage, aSize);
      End
    End
  end;
end;
Wobei aber 2 Probleme aufgetuacht sind:
1. Es funktioniert nicht . . .
2. Wieso: "readfile" ist dieser Mailslot ne datei??? wie funktioniert das denn genau?

Kann mir da bitte jemand helfen?


Wäre echt super
Liebe Grüße
joshi
MFG
Joshi
  Mit Zitat antworten Zitat