Arbeitsgruppe ändern

  • Hm - also das sagt erstmal ziemlich eindeutig was der Fehler angeblich sein soll:
    Der Parameter der DLLStructCreate-Funktion ist kein String!

    Kann ich aber absolut nicht nachvollziehen.
    Welche AutoIt-Version hast du aktuell denn drauf? - teste auch ruhig mal die neueste Beta oder so.
    Zumindestens ist der angegebene Fehler meiner Meinung nach Humbug - das ist definitiv ein String...

    Du kannst es höchstens nochmal so probieren aber das ändert meiner Meinung nach nichts an der Ausgangslage:

    Spoiler anzeigen
    [autoit]

    If _ChangeWorkgroup("TEST") Then MsgBox(0, "", "Änderung der Arbeitsgruppe erfolgreich!")
    MsgBox(0, "", "Fehlercode: " & @error & @CRLF & "Extended: " & @extended)

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _ChangeWorkgroup()
    ; Description: Change computer´s workgroup
    ; Parameter(s): $WGName = new workgroup name
    ; [$PCName] = name of the network pc-name
    ; Requirement(s): Netapi32.dll
    ; Return Value(s): On Success - 1
    ; @extended: DLL-Func Return Value
    ; On Failure - 0 and sets @ERROR
    ; 1: failure creating structure
    ; 2: failure setting data
    ; 3: failure get pointer
    ; 4: failure dll-call
    ; (func-errors --> @extended)
    ; Note(s): may require reboot to take effect
    ; Author(s): [email='AspirinJunkie@german-nlite.de'][/email]
    ;
    ;===============================================================================
    Func _ChangeWorkgroup($WGName, $PCName = @ComputerName)
    Local $struct[3], $Ptr[3], $Return

    [/autoit] [autoit][/autoit] [autoit]

    $struct[0] = DllStructCreate(String('wchar[' & StringLen($WGName) + 1 & ']'))
    If @error Then Return SetError(1, @error, 0)
    $struct[1] = DllStructCreate(String('wchar[1]'))
    If @error Then Return SetError(1, @error, 0)
    $struct[2] = DllStructCreate(String('wchar[' & StringLen($PCName) + 1 & ']'))
    If @error Then Return SetError(1, @error, 0)

    [/autoit] [autoit][/autoit] [autoit]

    DllStructSetData($struct[0], 1, $WGName)
    If @error Then Return SetError(2, @error, 0)
    DllStructSetData($struct[1], 1, '')
    If @error Then Return SetError(2, @error, 0)
    DllStructSetData($struct[2], 1, $PCName)
    If @error Then Return SetError(2, @error, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $Ptr[0] = DllStructGetPtr($struct[0])
    If @error Then Return SetError(3, @error, 0)
    $Ptr[1] = DllStructGetPtr($struct[1])
    If @error Then Return SetError(3, @error, 0)
    $Ptr[2] = DllStructGetPtr($struct[2])
    If @error Then Return SetError(3, @error, 0)

    [/autoit] [autoit][/autoit] [autoit]

    $Return = DllCall('Netapi32.dll', 'int', 'NetJoinDomain', "ptr", $Ptr[2], "ptr", $Ptr[0], "ptr", $Ptr[1], "ptr", $Ptr[1], "ptr", $Ptr[1], "dword", 0)
    If @error Then Return SetError(4, @error, 0)

    [/autoit] [autoit][/autoit] [autoit]

    Return SetError(0, $Return[0], 1)
    EndFunc ;==>_ChangeWorkgroup

    [/autoit]

    Ansonsten sehe ich keine Ansätze mehr warum ausgerechnet dieser Fehler kommt... - kann dieses Phänomen noch jemand bestätigen?

  • Oh, man, bin ich durcheinander :rolleyes:

    Ich hatte letztens ein Probem mit einem Script, was mir aber sicher, dass es mit der 3.2.6.0 noch funktionierte. Deshalb habe ich die alte Version nochmals installiert und ausprobiert. Natürlich lag es doch an mir und nicht an der Version :P

    Leider hatte ich vergessen wieder die neue Version aufzuspielen :hammer:

    Sorry, für die Mühe, die ich gemacht habe. *schäm* :tassen:

    Einmal editiert, zuletzt von Buffo (16. November 2007 um 00:52)

  • Hehe - sind immer die Sachen die man am wenigsten vermutet. [Blockierte Grafik: http://www.schildersmilies.de/schilder/pastscho.gif]

    Jetzt wissen wir ja wenigstens woran es lag und als positiver Nebeneffekt haben wir nun eine Funktion welche bezüglich ihrer möglichen Fehler äußerst schwatzhaft ist ;)
    Prinzipiell ist das Problem das der wchar-Datentyp erst mit Version 3.2.8.0 eingeführt wurde.
    Mit früheren Versionen wird das also nicht gehen.

    [Blockierte Grafik: http://www.replay.ru/forum/style_emoticons/default/drinks.gif]