Cette source est une adaptation VB de mon programme en Delphi (sur DelphiFr.com).
Elle permet d'envoyer un message de type NetSend à une machine distante (sur le reseau), avec la possibilité de mettre un nom d'emetteur quelqconque... ce qui n'est pas possible avec la commande "Net Send" de chez Microsoft.
Commentaires et notes sont les bienvenues.
Source / Exemple :
'----------------------------------------
' NSA : Envoi de net send anonyme
' --------------------------------
' Par LEVEUGLE Damien
' Elguevel (c) 2006
'
' Pour : VBFrance.com
'
'----------------------------------------
Option Explicit
'--------------------
' Fonctions Windows
'--------------------
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Private Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Long, _
ByVal lpBuffer As String, _
ByVal cToWrite As Long, _
ByRef cWritten As Long, _
Optional ByVal lpOverlapped As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hObject As Long) As Long
'--------------------
' Constantes Windows
'--------------------
Public Const OPEN_EXISTING = 3
Public Const FILE_SHARE_READ = &H1
Public Const INVALID_HANDLE_VALUE = &HFFFFFFFF
Public Const GENERIC_WRITE = &H40000000
Public Const FILE_ATTRIBUTE_NORMAL = &H80
'****************************************************
'* ENVOI
'****************************************************
Public Function SendMessage(Emetteur, Destinataire, LeMessage As String) As Boolean
' Declaration
Dim HWNDSlot As Integer
Dim Buffer As String
Dim NombreEcrit As Long
' Initialisation
SendMessage = False
NombreEcrit = 0 ' Non utilisé
' Création du MailSlot
HWNDSlot = CreateFile("\\" & Destinataire & "\MAILSLOT\MESSNGR", _
GENERIC_WRITE, _
FILE_SHARE_READ, 0, _
OPEN_EXISTING, _
FILE_ATTRIBUTE_NORMAL, 0)
' Définition de la trame
Buffer = Emetteur & Chr(0) & Destinataire & Chr(0) & LeMessage & Chr(0)
' Envoi
If (HWNDSlot <> INVALID_HANDLE_VALUE) Then
Call WriteFile(HWNDSlot, Buffer, Len(Buffer), NombreEcrit, 0)
SendMessage = True
Else
SendMessage = False
End If
' Fermeture du Slot
Call CloseHandle(HWNDSlot)
End Function
Conclusion :
Ce programme est hyper court et simple, et ne necessite que la connaissance des MAILSLOTS.
Il à été rapidement traduit, et donc peut etre impcomplet ou manquant de fonctionalités, mais il fonctionne.
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.