begin process at 2012 02 11 14:29:25
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > NET SEND EN DELPHI ( API NETMESSAGEBUFFERSEND )

NET SEND EN DELPHI ( API NETMESSAGEBUFFERSEND )


 Information sur la source

Note :
Aucune note
Catégorie :API Classé sous :api, netmessagebuffersend, netsend Niveau :Initié Date de création :22/11/2005 Vu / téléchargé :11 577 / 1 434

Auteur : elguevel

Ecrire un message privé
Site perso
Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Comme le titre l'explicite, c'est un programme qui permet d'envoyer des messages sur le reseau (ou domaine) de la meme façon qu'un "net send".

Attention je precise que mon programme reprend une API windows, ce n'est pas un vulgaire "Shell()" car désolé mais cette méthode me fait gerber !

Source

  • { -------------------------------------
  • 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.

 Conclusion

Pour envoyé un message assuré vous que sur votre poste et celui du client le service Affichage des message est démarré.

Sinon pour envoyé des messages en mettant un autre nom de machine que la votre il vous faut des droits suffisants !

Vous pouvez sans relache critiquer mon code, merci !

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip METHODE DE PROPAGATION D'UNE APPLICATION
Source avec Zip Source avec une capture GERER LES SERVICES DE WINDOWS AVEC WINSVC
Source avec Zip Source avec une capture WAKE ON LAN
Source avec Zip Source avec une capture POUR LES DEBUTANTS : NETTOYAGE RECURSIF
Source avec Zip INJECTER DLL DANS UN PROCESSUS EN COURS

 Sources de la même categorie

Source avec Zip Source avec une capture KINECT TEST V1 par FFCAST
Source avec Zip DÉCOUPER UNE FENÊTRE par gta126
Source avec Zip TRANSCRIRE UN FICHIER OPEN FINANCIAL EXCHANGE (OFX) EN FICHI... par jeffem
Source avec Zip Source avec une capture MSXML 4.0 VALIDATION XML / XSD par redtux
Source avec Zip FBRENOMMEADOBJET par fbalien

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture KINECT TEST V1 par FFCAST
Source avec Zip OBTENIR LE PROPRIÉTAIRE D'UN FICHIER (WIN32;NTFS) par ILP
Source avec Zip Source avec une capture AUTO-COMPLÉTION D'UN CONTRÔLE DE SAISIE par Bacterius
Source avec Zip Source avec une capture PACKAGE MICROSOFT par blueperfect
Source avec Zip Source avec une capture COMPOSANT TLOG UTILISANT UNE DLL par Bacterius

Commentaires et avis

Commentaire de Filipe35 le 25/11/2005 18:19:25

salut

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

Commentaire de f0xi le 27/11/2005 20:40:56 administrateur CS

Pourrait tu supprimer de ton archive les fichiers .Exe, .CFG, .DOF et .DCU, ce serait gentil merci.

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...

Commentaire de elguevel le 30/11/2005 20:27:11

Filipe35 > Ba j'me suis rendu compte que si j'tapait le nom d'un utilisateur fictif çà marchait pas, si je tape le nom d'un utilisateur du domaine, alors la çà marche (étant biensur administrateur sinon pas possibilité).

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 :-)

Commentaire de dj97 le 11/06/2008 10:52:33

j'ai executer ton aplliactif mais ça marche pas , j'ai toujours des erreurs , veuillez nous donner des exemples pour mieux comprendre , merci

Commentaire de PhilLU le 14/11/2010 22:08:20

Salut,
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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Api NetMessageBufferSend [ par paf24 ] Bonjour,j'ai besoin d'un peu d'aide pour utiliser l'api NetMessageBufferSend de la librairie Netapi32.dllen fait, je sais pas quel classe ajouter dans Api NetMessageBufferSend [ par paf24 ] Bonjour,j'ai besoin d'un peu d'aide pour utiliser l'api NetMessageBufferSend de la librairie Netapi32.dllen fait, je sais pas quel classe ajouter dans l'api IoCreateDevice ? [ par toto8966 ] Bonjour a tous !Comment faire pour pouvoir faire appel a l'api "IoCreateDevice" depuis Delphi (delphi 6 perso).Je pense que cette api se trouve dans N Les Api Windows [ par twoupy ] Est-ce que quelqu'un possède ou sait où je pourrais trouver l'aide sur les Api Windows (win32.hlp) en français. ce serait bien cool, parce que l'angl documentation API [ par Noureddine ] Bonjour,je cherche la documentation pour comprendre L'API, si vous avez une adresse ou je peut télécharger une documentation en français SVPMerci. problème avec une api [ par fabiin ] SalutEst-ce que kelk'un rencontre un problème lors de l'utilisation desetDCbrushcoloren Delphi 6Merci par avance@+Fabse Comment utiliser une API avec Delphi 5? [ par Manthis ] Salut,Je débute tout juste en Delphi 5. J'avais commencer par le VB. Et donc voila j'ai un problème comment utiliser une API avec Delphi?Ou doit-on la API sndPlaySoundA [ par jlg75 ] j'utilise l'API 'sndPlaySoundA' tirée de 'winmm.dll' pour lire des .wav dans un prog DELPHI. Je déclare explicitement cet API comme fonction 'external CHERCHE TUT DELPHI API [ par golum ] Salut je suis a la recherche d'un tut Delphi et API un peu comme EstDev pour VBAuriez vous quelque chose ? des adresses ? Winsock [ par SMoG ] Yop... Je desespere de trouver un jour de la doc sur l'api winsock avec des exemples delphi...Si qqn pouvait m'expliquer comment deux machines se con


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales