- { -------------------------------------
-
- Programme : Librairie de "Net Sender"
- Auteur : LEVEUGLE Damien
- Année : 2005
- API Utilisé : "NetMessageBufferSend"
- Explication : Permet d'envoyer des messages de type "Net Send" au utilisateur du reseau local
- ou du domaine.
-
- ------------------------------------- }
-
- unit ElgSender;
-
- interface
-
- uses Windows, SysUtils, Classes;
-
- { Fonction importée (API) }
- function ElgNetMessageBufferSend( WcServeur : PWideChar;
- WcDestination : PWideChar;
- WcSource : PWideChar;
- WcBuffer : PWideChar;
- iBufferLen : Cardinal) : Longint; stdcall; external 'NETAPI32.DLL' name 'NetMessageBufferSend';
-
- { Fonctions à appeler pour l'envoi de message }
- function NetSend( sDestinataire : string; sMessage : string; sSource : string; sServeur : string ) : Longint;
-
- { Fonction de convertion }
- function AllouePointeur( Chaine : string ) : PWideChar;
-
-
- implementation
-
- { Fonction qui permet d'enoyer un message sur le réseau}
- function NetSend( sDestinataire : string; sMessage : string; sSource : string; sServeur : string ) : Longint;
- { ---------------------------------------------------------------------------------------------
- sDestinataire : Nom de la machine client à qui envoyer le message
- sMessage : Message à envoyer
- sSource : [Facultatif] Nom de la machine qui l'envoi (doit etre un nom de machine valide
- sur le reseau)
- sServeur : [Facultatif] Si un serveur de domaine existe on peut le preciser,
- sinon on peut aussi mettre le meme nom de machine
- que la machine Source. (sServeur = sSource)
-
- ----------------------------------------------------------------------------------------------- }
-
- var
- // Pointeurs
- PDestinataire : PWideChar;
- PMessage : PWideChar;
- PSource : PWideChar;
- PServeur : PWideChar;
- begin
-
- try
-
- // Convertie les chaines de type String en Pointeur sur WideChar
- PDestinataire := AllouePointeur( sDestinataire );
- PMessage := AllouePointeur( sMessage );
- PSource := AllouePointeur( sSource );
- PServeur := AllouePointeur( sServeur );
-
- // Fonction d'envoi (API Windows)
- Result := ElgNetMessageBufferSend( PServeur, PDestinataire, PSource,
- PMessage, (Length(sMessage) * SizeOf(WideChar) + 1) );
-
- finally
-
- // Libère les buffers
- FreeMem( PServeur );
- FreeMem( PSource );
- FreeMem( PMessage );
- FreeMem( PDestinataire );
-
- end;
-
- end;
-
- { Genere des Pointeurs de WideChar, en fonction de la chaine passé }
- function AllouePointeur( Chaine : string ) : PWideChar;
- var
- Taille : Integer;
- PPointeur : PWideChar;
- begin
- Taille := Length(Chaine) * SizeOf(WideChar) + 1;
- GetMem( PPointeur, Taille );
- // Si chaine inexistante le pointeur sera Null
- if ( Trim( Chaine ) = '' ) then PPointeur := nil else StringToWideChar( Chaine, PPointeur, Taille );
- Result := PPointeur;
- end;
-
- end.
{ -------------------------------------
Programme : Librairie de "Net Sender"
Auteur : LEVEUGLE Damien
Année : 2005
API Utilisé : "NetMessageBufferSend"
Explication : Permet d'envoyer des messages de type "Net Send" au utilisateur du reseau local
ou du domaine.
------------------------------------- }
unit ElgSender;
interface
uses Windows, SysUtils, Classes;
{ Fonction importée (API) }
function ElgNetMessageBufferSend( WcServeur : PWideChar;
WcDestination : PWideChar;
WcSource : PWideChar;
WcBuffer : PWideChar;
iBufferLen : Cardinal) : Longint; stdcall; external 'NETAPI32.DLL' name 'NetMessageBufferSend';
{ Fonctions à appeler pour l'envoi de message }
function NetSend( sDestinataire : string; sMessage : string; sSource : string; sServeur : string ) : Longint;
{ Fonction de convertion }
function AllouePointeur( Chaine : string ) : PWideChar;
implementation
{ Fonction qui permet d'enoyer un message sur le réseau}
function NetSend( sDestinataire : string; sMessage : string; sSource : string; sServeur : string ) : Longint;
{ ---------------------------------------------------------------------------------------------
sDestinataire : Nom de la machine client à qui envoyer le message
sMessage : Message à envoyer
sSource : [Facultatif] Nom de la machine qui l'envoi (doit etre un nom de machine valide
sur le reseau)
sServeur : [Facultatif] Si un serveur de domaine existe on peut le preciser,
sinon on peut aussi mettre le meme nom de machine
que la machine Source. (sServeur = sSource)
----------------------------------------------------------------------------------------------- }
var
// Pointeurs
PDestinataire : PWideChar;
PMessage : PWideChar;
PSource : PWideChar;
PServeur : PWideChar;
begin
try
// Convertie les chaines de type String en Pointeur sur WideChar
PDestinataire := AllouePointeur( sDestinataire );
PMessage := AllouePointeur( sMessage );
PSource := AllouePointeur( sSource );
PServeur := AllouePointeur( sServeur );
// Fonction d'envoi (API Windows)
Result := ElgNetMessageBufferSend( PServeur, PDestinataire, PSource,
PMessage, (Length(sMessage) * SizeOf(WideChar) + 1) );
finally
// Libère les buffers
FreeMem( PServeur );
FreeMem( PSource );
FreeMem( PMessage );
FreeMem( PDestinataire );
end;
end;
{ Genere des Pointeurs de WideChar, en fonction de la chaine passé }
function AllouePointeur( Chaine : string ) : PWideChar;
var
Taille : Integer;
PPointeur : PWideChar;
begin
Taille := Length(Chaine) * SizeOf(WideChar) + 1;
GetMem( PPointeur, Taille );
// Si chaine inexistante le pointeur sera Null
if ( Trim( Chaine ) = '' ) then PPointeur := nil else StringToWideChar( Chaine, PPointeur, Taille );
Result := PPointeur;
end;
end.