VisualBasic-Tutorial #4: Netsend

In diesem Tutorial geht es um das versenden von Nachrichten im Netzwerk per "Net send". Es wird auch beschrieben, wie man den Absender der Nachricht f�lscht, etc.

Beispiel f�r die Anwendung des Befehls:
Start->Ausf�hren: "Net Send LocalHost Hallo" -> sollte ein "hallo" an den eigenen Rechner senden. (anstatt Localhost die eigene IP verwenden ...)
Start->Ausf�hren: "Net Send Broadcast Hallo" -> sollte ein Hallo ans gesamte Netzwerk senden.

In VisualBasic gibt es nun verschiedene M�glichkeiten solche Nachrichten zu versenden. die erste: man �ffnet "net.exe" per Shell und �bergibt die n�tigen Parameter.
Dies ist nicht unbedingt der beste Weg, da man auf die net.exe angewiesen ist und diese unter umst�nden gesperrt ist (in manchen Schulnetzwerken kann dies der fall sein)

Die andere M�glichkeit ist eine API bzw. eine DLL zu verwenden und genau diese will ich in diesem Tutorial anschauen.

Das brauchen wir dazu:
Code:
   1:Declare Function NetMessageBufferSend Lib "Netapi32" (ByVal sServerName$, ByVal sMsgName$, ByVal sFr
    :omName$, ByVal sMessageText$, ByVal lBufferLength&) As Long

Zudem noch:

Code:
   1:StrConv(String, Conversion As VbStrConv)

Um Strings in andere Variabel-Typen zu verwandeln (wie zum Beispiel Unicode).

Was man zur API wissen sollte, ist dass alle Strings als Unicode �bergeben werden m�ssen.
Nun schauen wir uns mal an was wir der API-Funktion alles �bergeben m�ssen.
1. Argument: sServerName$ : Der Server �ber welche die Nachricht gesendet werden soll. Hier geben wir einen Nullstring an, dann wird die Nachricht �ber den eigenen Rechner verschickt.

2. Argument: sMsgName$ : Der Empf�nger (PC-Name oder IP) als Unicode-String.

3. Argument: sFromName$ : Der Sender (Im Normalfall der Name oder die IP eines Rechners) als Unicode-String. Das sch�ne daran: Es kann irgendetwas angegeben werden, zum Beispiel auch "Administrator" oder der Name eines fremden PCs.

4. Argument: sMessageText$ : Die Nachricht die verschickt werden soll (auch als Unicode-String)

5. Argument: lBufferLength& : Die Buffer-L�nge. (In diesem Fall die L�nge der zu sendenden Nachricht.)
Kann ermittelt werden mit:

Code:
7:len(StrConv(NACHRICHT,vbUnicode))


Wobei NACHTRICHT durch den zu versendenden Text ersetzt wird.
Hier nun ein kleines Beispiel-Quelltext welcher dem eigenen Rechner eine solche Nachricht schickt:

Code:
   1:Private Declare Function NetMessageBufferSend Lib "Netapi32" (ByVal sServerName$, ByVal sMsgName$, B
    :yVal sFromName$, ByVal sMessageText$, ByVal lBufferLength&) As Long
   2:
   3:Private Sub Form_Click()
   4:NetMessageBufferSend "", StrConv("localhost", vbUnicode), StrConv("Ich", vbUnicode), StrConv("hallo"
    :, vbUnicode), Len(StrConv("hallo", vbUnicode))
   5:End Sub
   6:

Falls Fragen auftauchen, schreibt sie ins G�stebuch oder schickt mir ein Email: webmaster'at'black-silence'dot'ch

Viele Gr�sse
Euer Webmaster