[VB.NET] Problem mit NetMessageBufferSend Function

forsterm

Erfahrenes Mitglied
Hallo,
ich habe im Internet eine Klasse gefunden mir der es möglich ist Nachrichten mit dem net send Befehl zu versenden.
Code:
Imports System.runtime.InteropServices
Public Class NetSend
Public Function Sende(ByVal SendeAn As String, _
	ByVal SendeNachricht As String) As Integer
	Return NetMessageBufferSend(Nothing, SendeAn, Nothing, _
	SendeNachricht, SendeNachricht.Length * 2 + 2)
End Function
<DllImportAttribute("Netapi32", CharSet:=CharSet.Unicode)> _
Public Shared Function NetMessageBufferSend(ByVal servername As String, _
	ByVal msgname As String, ByVal fromname As String, ByVal buf As String, _
	ByVal buflen As Integer) As Integer
End Function
End Class

Aufgerufen wird das ganze so:
Code:
Dim Message As New NetSend
Dim erg As Integer
erg = Message.Sende(an.Text, nachricht.Text)
If Not erg = 0 Then
MessageBox.Show("Versandt gescheitert.")
Else
MessageBox.Show("Versandt erfolgreich.")
End If

Soweit funktioniert auch noch alles wunderbar. So nun möchte ich beim Versenden einer Nachricht aber einen beliebigen Absendernamen angeben und genau das ist mein Problem, denn ich weiß leider nicht was ich bei buf und buflen in der NetMessageBufferSend angeben muss.
Ich hoffe das mir hier jemand weiterhelfen kann.

[edit]
Hab jetzt herausgefunden, dass es so
Code:
Dim Message As New NetSend
Dim erg As Integer
 
erg = Message.NetMessageBufferSend(an.Text, an.Text, Environment.UserName, nachricht.Text, Len(nachricht.Text) * 2)
 
If Not erg = 0 Then
  MessageBox.Show("Versandt gescheitert.")
Else
  MessageBox.Show("Versandt erfolgreich.")
End If

funktioniert, aber nur wenn der Absendername der Computer bzw. Benutzername ist.
Sobald ich einen anderen Absendername angeben funktioniert es nicht mehr, weiß jemand, woran das liegen könnte?
[/edit]

mfg
forsterm
 
Zuletzt bearbeitet:
Hallo,

ich habe genau das selbe Problem, versenden klappt nur wenn From- und To-Name der selbe ist, sonst kommt der Fehler 2273 (User not found).

Hat jemand eine Lösung?

Danke

i1o
 
@Fehler 2273: Bedeutet dass der Host nicht gefunden werden konnte.
Schaut euch doch mal die Importdefinition auf pinvoke.net an:
http://pinvoke.net/default.aspx/netapi32/NetMessageBufferSend.html

Und denkt bitte auch daran immer die Fehlercodes zu beachten.
Dafür sind sie ja auch da. Sonst wird die Fehlersuche ein endloses Rätzelraten.
Code:
Private Const ERROR_ACCESS_DENIED As Integer = 5
Private Const ERROR_INVALID_PARAMETER As Integer = 87
Private Const ERROR_NOT_SUPPORTED As Integer = 50
Private Const NERR_BASE As Integer = 2100
Private Const NERR_NameNotFound As Integer = 2273
Private Const NERR_NetworkError As Integer = 2136
Private Const NERR_Success As Integer = 0
 
das komische ist ja, dass es funktioniert, wenn für absender und empfänger der selbe name angegeben wird, genauso wie wenn für den absender nothing angegeben wird, es aber nicht mehr funktioniert, wenn der empfänger irgend etwas anderes ist...
 
das komische ist ja, dass es funktioniert, wenn für absender und empfänger der selbe name angegeben wird, genauso wie wenn für den absender nothing angegeben wird, es aber nicht mehr funktioniert, wenn der empfänger irgend etwas anderes ist...
Bitte an die Netiquette halten und die Groß- bzw. die Kleinschreibung beachten. Ist bei uns hier am Forum Pflicht und erleichtert unter anderem auch die Lesbarkeit. Danke.
 
Norbert Eder hat gesagt.:
Bitte an die Netiquette halten und die Groß- bzw. die Kleinschreibung beachten. Ist bei uns hier am Forum Pflicht und erleichtert unter anderem auch die Lesbarkeit. Danke.

Sorry, hatte die Netiquette nicht gelesen...

niggo hat gesagt.:
Ist zwar schon etwas älter, aber das sollte die Frage beantworten:
http://groups.google.de/group/micros...13e399974621b8

Okay, das erklärt wieso es nicht funktioniert, allerdings...
...habe ich ein VB.NET-Programm mit dem es funktioniert, d.h. es können NET SEND - Messages mit beliebigem Absendernamen versendet werden. (kann ich auf Wunsch hochladen falls es mir jmd. nicht glaubt *g*) Das Programm ist von einem Freund, der leider den Sourcecode nicht mehr hat und sich auch nicht mehr erinnern kann wie er es programmiert hat.... *sagt er zumindest*

Gibt es noch eine andere Möglichkeit NET SEND - Messages aus .NET heraus zu versenden?
 
Sorry, hatte die Netiquette nicht gelesen...
unterschreibst du immer Verträge ohne sie zu lesen :confused:
Okay, das erklärt wieso es nicht funktioniert, allerdings...
...habe ich ein VB.NET-Programm mit dem es funktioniert, d.h. es können NET SEND - Messages mit beliebigem Absendernamen versendet werden. (kann ich auf Wunsch hochladen falls es mir jmd. nicht glaubt *g*) Das Programm ist von einem Freund, der leider den Sourcecode nicht mehr hat und sich auch nicht mehr erinnern kann wie er es programmiert hat.... *sagt er zumindest*
Dann nutz doch den REflector und schau nach.
Gibt es noch eine andere Möglichkeit NET SEND - Messages aus .NET heraus zu versenden?
einfach ein ShellExecute (Process.Start) mit NET SEND machen
 
Das Programm ist von einem Freund, der leider den Sourcecode nicht mehr hat und sich auch nicht mehr erinnern kann wie er es programmiert hat.... *sagt er zumindest*

Und wo liegt das Problem? Du hast doch das EXE-File vorliegen und wenn es dotnet ist, dann besorg Dir im Netz einen Reflector mit Disassemblierung und schon hast Du den Quellcode...

Den .NET-Reflector bekommst DU hier: Lutz Roeder

Wo es jetzt den Disassembler dazu gab, weiss ich net mehr. Das war einfach nur 'ne DLL, die man in das gleiche Verezeichnis packen musste. Falls Du diese haben möchtest, kann ich sie Dir auch per Mail schicken.

MfG
..::SD::..
 

Neue Beiträge

Zurück