DLL und API und viele Fragen

  • Hallo ihr da draussen.

    Im letzten Thema stand es sei veraltet und ich soll ein neues erstellen :whistling:
    Also eine kurze Zusammenfassung:
    Ich habe ein Tool mit dem sich unsere Aussendienstler per VPN einwählen und noch verschiedene andere Dinge passieren. gpupdate, Netzlaufwerke usw.
    Für das alles nutze ich rasdial, den Befehl setze ich direkt im Script ab. Funktioniert solange gut bis jemand ein Sonderzeichen im Passwort hat das mir dann den String zerlegt.
    Im Abgelaufenen Thema bekam ich den Rat es direkt mit der API zu versuchen.

    Jetzt steh ich hier aber wie der Ochse vorm Berg und weiss noch nichtmal wo ich anfangen soll.
    Die Rasapi32.dll hab ich schon. Das war mein erster Teilerfolg :rock:
    So wie fange ich jetzt an? Weiss jemand wo ich mich einlesen kann?

    Edit: Das hier DFÜ Einwahl einfach mit RasApi32.dll RasDlg.dll hab ich schon gefunden.
    Aber so richtig steig ich da auch noch nicht durch :huh:

    Einmal editiert, zuletzt von Camulus (19. Juli 2011 um 10:09)

  • So,
    ich hab mich mal versucht es ein bißchen auseinander zu pflücken.

    Spoiler anzeigen
    [autoit]

    Global Const $RAS_MaxEntryName = 256
    Global Const $RAS_MaxPhoneNumber = 128
    Global Const $RAS_MaxCallbackNumber = 128
    Global Const $UNLEN = 256
    Global Const $PWLEN = 256
    Global Const $DNLEN = 12
    Global Const $RAS_MaxDeviceType = 16
    Global Const $RAS_MaxDeviceName = 128
    Global Const $MAX_PATH = 260
    Global $RasActiveEntryName, $hRasConn, $RASAPIDLL, $RasEntrieNames, $RasDefaultEntrie
    Global $RasUserName = "nc-musterha@netcologne.de"
    Global $RasPassword = "1M1111"

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

    Func _RasDial($szEntryName, $szUserName, $szPassword)
    Local $RASDIALPARAMS = DllStructCreate("dword dwSize;char szEntryName[" & $RAS_MaxEntryName + 1 & "];" & _
    "char szPhoneNumber[" & $RAS_MaxPhoneNumber + 1 & "];" & _
    "char szCallbackNumber[" & $RAS_MaxCallbackNumber + 1 & "];" & _
    "char szUserName[" & $UNLEN + 1 & "];" & _
    "char szPassword[" & $PWLEN + 1 & "];" & _
    "char szDomain[" & $DNLEN + 1 & "];dword dwSubEntry;ulong_ptr dwCallbackId;dword dwIfIndex")
    DllStructSetData($RASDIALPARAMS, "dwSize", DllStructGetSize($RASDIALPARAMS))
    DllStructSetData($RASDIALPARAMS, "szEntryName", $szEntryName)
    DllStructSetData($RASDIALPARAMS, "szUserName", $szUserName)
    DllStructSetData($RASDIALPARAMS, "szPassword", $szPassword)
    Local $RasConn = DllStructCreate("dword hRasConn")
    DllStructSetData($RasConn, "hRasConn", 0)
    Local $aRet = DllCall($RASAPIDLL, "int", "RasDial", _
    "ptr", 0, "ptr", 0, _
    "ptr", DllStructGetPtr($RASDIALPARAMS), _
    "dword", 0, "hwnd", 0, _
    "ptr", DllStructGetPtr($RasConn))
    If $aRet[0] Then Return SetError(1, $aRet[0], -1)
    $hRasConn = DllStructGetData($RasConn, "hRasConn")
    $RasActiveEntryName = $szEntryName
    Return $hRasConn
    EndFunc ;==>_RasDial

    [/autoit]

    Aaaaber ich bin noch ziemlich verwirrt mit $szEntryName und $RasActiveEntryName.

    Kann mir da mal jemand auf die Sprünge helfen?

    Und....
    wie kommt man auf diese Zahlenwerte?

    Spoiler anzeigen
    [autoit]

    Global Const $RAS_MaxEntryName = 256
    Global Const $RAS_MaxPhoneNumber = 128
    Global Const $RAS_MaxCallbackNumber = 128
    Global Const $UNLEN = 256
    Global Const $PWLEN = 256
    Global Const $DNLEN = 12
    Global Const $RAS_MaxDeviceType = 16
    Global Const $RAS_MaxDeviceName = 128
    Global Const $MAX_PATH = 260

    [/autoit]

    Einmal editiert, zuletzt von Camulus (19. Juli 2011 um 10:34)

    • Offizieller Beitrag

    bin noch ziemlich verwirrt mit $szEntryName und $RasActiveEntryName.


    $szEntryName ist ein Telefonbucheintrag und wenn dieser angewählt wurde ist es der $RasActiveEntryName. ;)

    Zitat von MSDN RASDIALPARAMS

    szEntryName

    A null-terminated string that contains the phone-book entry to use to establish the connection. An empty string ("") specifies a simple modem connection on the first available modem port, in which case a non-empty szPhoneNumber must be provided.


    Alle Informationen findest du auf MSDN RasDial Function und hier die Struktur RASDIALPARAMS.