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