Visual Basic - Ich bin zu doof!

Wessy

Erfahrenes Mitglied
Hallo beisammen,

ich habe hier ein Programm mit Visual Basic geschrieben. Jetzt möchte ich gern eine DLL benutzen, les mir die Artikel durch und wenn ich das selbst machen will funktioniert das nicht. Kann mir jemand mal einen Anreiz geben in welche Richtung ich meinen Fehler suchen sollte? Eigentlich sollte ein Benutzer auf meinem Computer in eine Gruppe gepackt werden.

Das ist meine DLL:
PHP:
Private Declare Function NetLocalGroupAddMembers Lib "netapi32.dll" ( _
       ByVal servername As String, _
       ByVal groupname As String, _
       ByVal level As Long, _
       ByVal buf As String, _
       ByVal totalentries As Long) As Long
Das sind meine Variablen:
PHP:
        strConvServer = StrConv("Obelix", vbUnicode)
        strConvZiel = StrConv("testkonto", vbUnicode)
        strConvBuf = StrConv("lokale_gruppe", vbUnicode)
Na und das mein Aufruf:
PHP:
lRet = NetLocalGroupAddMembers(strConvServer, strConvBuf, 3, strConvZiel, 1)
Ich bekomme immer den Fehler
1387 Ein Mitglied konnte in der lokalen Gruppe nicht hinzugefgt oder entfernt werden da das Mitglied nicht vorhanden ist.
 
Ah, danke erst einmal für deine rasche Antwort. Ich habe dort auch mal nachgeschaut. Jetzt steht da aber auch noch:
Code:
Pointer to a buffer that contains the data for the new local group members.

Ja dann muss ich erst mal was in den Speicher packen? Wie soll das denn gehen?
 
Ah, danke erst einmal für deine rasche Antwort. Ich habe dort auch mal nachgeschaut. Jetzt steht da aber auch noch:
Code:
Pointer to a buffer that contains the data for the new local group members.

Ja dann muss ich erst mal was in den Speicher packen? Wie soll das denn gehen?
Eigentlich sollte das automatisch funktionieren.

Gruß
 
Oh ha. Hab ich immer noch nicht geantwortet? Habe zwar jetzt gerade den richtigen Code nicht vor Augen, aber die Deklaration der DLL-Funktion war auf jeden Fall nicht richtig.

So ists richtig:
PHP:
Private Declare Function NetLocalGroupAddMembers Lib "netapi32.dll" ( _
       ByVal servername As String, _
       ByVal groupname As String, _
       ByVal level As Long, _
                 buf As String, _
       ByVal totalentries As Long) As Long

Die Funktion greift auf die Speicheradresse der Variable zu und ein ByVal übergibt nur den Wert und nicht den Pointer auf die Adresse (hoffe das habe ich jetzt programmiertechnisch korrekt ausgedrückt). :)
 

Neue Beiträge

Zurück