Показать сообщение отдельно

  #2  
Старый 28.04.2007, 02:13
begin_end
Members of Antichat - Level 5
Регистрация: 04.01.2007
Сообщений: 176
Провел на форуме:
17964969

Репутация: 1362
По умолчанию

Если реализовывать без всякой клиентской части, то речь пойдёт о отсылке, подобной 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 может включать в себя символы перевода на новую строку.
 
Ответить с цитированием