| begin_end |
28.04.2007 02:13 |
Если реализовывать без всякой клиентской части, то речь пойдёт о отсылке, подобной net send.
Код:
function WTD(AText:string):string;
var PText : PChar; MaxLength : integer;
begin
MaxLength:=length(AText)+1;
PText:=StrAlloc(MaxLength);
StrPCopy(PText,AText);
{$IFDEF WIN32}
CharToOEM(PText,PText); {32Bit}
{$ELSE}
AnsiToOEM(PText,PText); {16Bit}
{$ENDIF}
Result:=StrPas(PText);
StrDispose(PText);
end;
procedure SendNetMessage(AHost, AFromSt, AToSt, AMessageSt: string);
var
hSlot : THandle;
s : string;
cb : DWORD;
begin
hSlot := CreateFile(PChar('\\'+AHost+'\mailslot\messngr'),
GENERIC_WRITE, FILE_SHARE_READ, 0,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if hSlot <> INVALID_HANDLE_VALUE then
begin
AFromSt:=WTD(AFromSt);
AToSt:=WTD(AToSt);
AMessageSt:=WTD(AMessageSt);
s := AFromSt + #0 + AToSt + #0 + AMessageSt + #0;
cb := length(S);
WriteFile(hSlot, s[1], cb, cb, 0);
CloseHandle(hSlot);
end;
end;
Использовать так: SendNetMessage('имя_компа','от_кого' ,'кому','текст_сообщения');
Первый параметр не может быть IP-адресом, 2 и 3 могут пустовать. 4 может включать в себя символы перевода на новую строку.
|