Newsgroup: it.comp.lang.delphi
Titolo: net send...

Ho scaricato il seguente sorgente da Torry.net
Serve ad inviare messaggi tramite rete locale lan con l'implementazione del
comando net send...
Il problema è che se si esegue il debug durante l'uso dell'applicazione
tutto ok ma...
Se il file exe viene eseguito fuori dal delphi o comunque senza debug si
blocca l'applicazione, sapete aiutarmi?
GRazie...
***************************************************
function NetSend(dest, Source, Msg: string): Longint; overload;
type
  TNetMessageBufferSendFunction = function(servername, msgname, fromname:
PWideChar;
    buf: PWideChar; buflen: Cardinal): Longint;
  stdcall;
var
  NetMessageBufferSend: TNetMessageBufferSendFunction;
  SourceWideChar: PWideChar;
  DestWideChar: PWideChar;
  MessagetextWideChar: PWideChar;
  Handle: THandle;
begin
  Handle := LoadLibrary('NETAPI32.DLL');
  if Handle = 0 then
  begin
    Result := GetLastError;
    Exit;
  end;
    @NetMessageBufferSend := GetProcAddress(Handle, 'NetMessageBufferSend');
  if @NetMessageBufferSend = nil then
  begin
    Result := GetLastError;
    Exit;
  end;
  MessagetextWideChar := nil;
  SourceWideChar      := nil;
  DestWideChar        := nil;
  try
    GetMem(MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
    GetMem(DestWideChar, 20 * SizeOf(WideChar) + 1);
    StringToWideChar(Msg, MessagetextWideChar, Length(Msg) *
SizeOf(WideChar) + 1);
    StringToWideChar(Dest, DestWideChar, 20 * SizeOf(WideChar) + 1);
    if Source = '' then
      Result := NetMessageBufferSend(nil, DestWideChar, nil,
        MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1)
    else
    begin
      GetMem(SourceWideChar, 20 * SizeOf(WideChar) + 1);
      StringToWideChar(Source, SourceWideChar, 20 * SizeOf(WideChar) + 1);
      Result := NetMessageBufferSend(nil, DestWideChar, SourceWideChar,
        MessagetextWideChar, Length(Msg) * SizeOf(WideChar) + 1);
      FreeMem(SourceWideChar);
    end;
  finally
    FreeMem(MessagetextWideChar);
    FreeLibrary(Handle);
  end;
end;
function NetSend(Dest, Msg: string): Longint; overload;
begin
  Result := NetSend(Dest, '', Msg);
end;
function NetSend(Msg: string): Longint; overload;
begin
  Result := NetSend('', '', Msg);
end;
// Example:
procedure TForm1.Button1Click(Sender: TObject);
const
  NERR_BASE = 2100;
  NERR_NameNotFound = NERR_BASE + 173;
  NERR_NetworkError = NERR_BASE + 36;
  NERR_Success = 0;
var
  Res: Longint;
  sMsg: string;
begin
  Res := NetSend('LoginName', 'Your Message...');
  case Res of
    ERROR_ACCESS_DENIED: sMsg := 'user does not have access to the requested
information.';
    ERROR_INVALID_PARAMETER: sMsg := 'The specified parameter is invalid.';
    ERROR_NOT_SUPPORTED: sMsg := 'This network request is not supported.';
    NERR_NameNotFound: sMsg := 'The user name could not be found.';
    NERR_NetworkError: sMsg := 'A general failure occurred in the network
hardware.';
    NERR_Success: sMsg := 'Message sent!';
  end;
  ShowMessage(sMsg);
end;

 wrote in message
news:7uSna.50107$T34.1...@news2.tin.it...


 ha scritto nel messaggio
news:b7ouo2$7g4$1...@rex.ip-plus.net...


 wrote in message
news:s2Zna.52498$T34.1...@news2.tin.it...


 ha scritto nel messaggio:
perfavore quota correttamente. Non accodare al tuo messaggio tutto il
vecchio testo e cerca di "riportare" le parti a cui rispondi.
Invita a tua volta a quotare correttamente chiunque non lo faccia. Tutto
questo per aumentare la leggibilità del gruppo
--
- Carlo -
cbertu81(at)libero(dot)it

 quello che io ho fatto č stato quello di simulare questo da Delphi con:


Per caso c'è un modo per testare se il messaggio è arrivato?
Nell'esempio che avevo postato io c'era.... ma con questa semplice riga di
codic è possibile?
Grazie ancora...

 Tutto questo per aumentare la leggibilità del gruppo.
Capisco.
Ciao
  Alessandro.

 Per caso c'č un modo per testare se il messaggio č arrivato?
Sicuramente c'č (almeno spero) ma purtroppo non posso aiutarti in questo
momento, sono in partenza :))))
Una cosa che ti consiglio č di documentarti sul comando NET di Windows e sul
comando ShellExecute di Delphi.
Ciao,
 Alessandro.