Soyez le premier à donner votre avis sur cette source.
Vue 14 063 fois - Téléchargée 1 760 fois
{ ------------------------------------- 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.
quelle doit être le format de la destination?
'192.168.0.105'?
ou '//192.168.0.105'
ou '\\192.168.0.105'???
ou 'Truc' (le nom de la machine?)
à quoi correspondent les codes d'erreur retournés par 'result'?
Merci pour votre aide!!!
PhilLu
f0xi > Le fait qui est les dcu et l'exe ne devrait pas te poser de problème pour regarder les sources ??
Si ta des optimisation, alors fait en profité tout le monde, je me suis pas attardé sur la puissance ou l'optimisation e l'outils, c'est juste une Démo de l'API.
Et merci pour vos Coms :-)
Parce que j'aimerais bien regarder au sources de l'appli, surtout que j'ai vus d'aprés le code d'exemple qu'il y aurait quelques optimisations possible...
j'ai pas encore tester ton code mais quelque chose m'interpel:
# sSource : [Facultatif] Nom de la machine qui l'envoi (doit etre un nom de machine valide sur le reseau)
Or il se trouve qu'en VB on n'est pas obliger d'en mettre un valide,par exemple sur certains programmes qui envoie des messages anonyme, as tu testés ?
Filipe
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.