WLAN Hotspot Programm

  • Hi,

    wie bestimmt viele schon wissen kann man ab Windows 7 einen Hotspot vom Laptop aus erstellen via CMD. Ich hab das ganze mal in ein paar Code-Zeilen gepackt, damit man nicht immer alles neu in die CommandPrompt eingeben muss. Außerdem ist noch eine kleine Funktion zum erstellen von Passwörtern mit eingebaut..:) Man muss allerdings noch in der Systemsteuerung die Freigabe aktivieren, siehe Bild:
    [Blockierte Grafik: http://praxistipps.s3.amazonaws.com/aktive-internetverbindung-teilen_5332b565.jpg]

    Naja also wer es brauchen kann :D , ich nutze es mitlerweile relativ häufig und es funktioniert echt gut! Hier ist der Code:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    #include <Process.au3>

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

    #RequireAdmin

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

    main()
    Func main()
    GUICreate("WLAN Hotspot", 300, 140);, -1, -1, -1, $WS_EX_TOOLWINDOW)
    GUISetBkColor(0x808080)
    GUISetFont(11, 400, 1, "Century Gothic")
    $newname = GUICtrlCreateLabel("Name:", 10, 10)
    GUICtrlSetCursor(-1, 0)
    ;~ $name = GUICtrlCreateInput(@ComputerName & "-Hotspot", 100, 10, 190, 21)
    $name = GUICtrlCreateInput("WLAN-" & Generate(5), 100, 10, 190, 21)
    $newpw = GUICtrlCreateLabel("Passwort:", 10, 40)
    GUICtrlSetCursor(-1, 0)
    $pw = GUICtrlCreateInput(Generate(10), 100, 40, 190, 21);, $ES_PASSWORD)
    $perm = GUICtrlCreateCheckbox(" Permanent", 9, 70)
    $secure = GUICtrlCreateSlider(120, 70, 170, 30)
    GUICtrlSetLimit(-1, 20, 5)
    GUICtrlSetBkColor(-1, 0x808080)
    GUICtrlSetData(-1, 10)
    $on = GUICtrlCreateButton("An", 7, 105, 140, 24)
    $off = GUICtrlCreateButton("Aus", 152, 105, 140, 24)
    GUICtrlSetState($off, $GUI_DISABLE)
    GUISetState()

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    Exit
    ElseIf $msg = $on Then
    GUICtrlSetState($on, $GUI_DISABLE)
    GUICtrlSetState($name, $GUI_DISABLE)
    GUICtrlSetState($pw, $GUI_DISABLE)
    GUICtrlSetState($perm, $GUI_DISABLE)
    GUICtrlSetState($off, $GUI_ENABLE)
    If GUICtrlRead($perm) = $GUI_CHECKED Then
    _RunDos("netsh wlan set hostednetwork mode=allow ssid=" & GUICtrlRead($name) & " key=" & GUICtrlRead($pw) & " keyUsage=persistent")
    Else
    _RunDos("netsh wlan set hostednetwork mode=allow ssid=" & GUICtrlRead($name) & " key=" & GUICtrlRead($pw) & " keyUsage=temporary")
    EndIf
    _RunDos("netsh wlan start hostednetwork")
    ElseIf $msg = $off Then
    GUICtrlSetState($off, $GUI_DISABLE)
    GUICtrlSetState($on, $GUI_ENABLE)
    GUICtrlSetState($name, $GUI_ENABLE)
    GUICtrlSetState($pw, $GUI_ENABLE)
    GUICtrlSetState($perm, $GUI_ENABLE)
    _RunDos("netsh wlan stop hostednetwork")
    ElseIf $msg = $newname Then
    GUICtrlSetData($name, "WLAN-" & Generate(5))
    ElseIf $msg = $secure Or $msg = $newpw Then
    GUICtrlSetData($pw, Generate(GUICtrlRead($secure)))
    EndIf
    WEnd
    EndFunc

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

    Func Generate($max)
    $chr = ""
    For $i = 1 To $max
    $nchr = Random(0, 1, 1)
    If $nchr = 1 Then
    $chr = $chr & _ToLetter(Random(1, 52, 1))
    Else
    $chr = $chr & Random(0, 9, 1)
    EndIf
    Next
    Return $chr
    EndFunc

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

    Func _ToLetter($num)
    If $num = 1 Then
    Return "a"
    ElseIf $num = 2 Then
    Return "b"
    ElseIf $num = 3 Then
    Return "c"
    ElseIf $num = 4 Then
    Return "d"
    ElseIf $num = 5 Then
    Return "e"
    ElseIf $num = 6 Then
    Return "f"
    ElseIf $num = 7 Then
    Return "g"
    ElseIf $num = 8 Then
    Return "h"
    ElseIf $num = 9 Then
    Return "i"
    ElseIf $num = 10 Then
    Return "j"
    ElseIf $num = 11 Then
    Return "k"
    ElseIf $num = 12 Then
    Return "l"
    ElseIf $num = 13 Then
    Return "m"
    ElseIf $num = 14 Then
    Return "n"
    ElseIf $num = 15 Then
    Return "o"
    ElseIf $num = 16 Then
    Return "p"
    ElseIf $num = 17 Then
    Return "q"
    ElseIf $num = 18 Then
    Return "r"
    ElseIf $num = 19 Then
    Return "s"
    ElseIf $num = 20 Then
    Return "t"
    ElseIf $num = 21 Then
    Return "u"
    ElseIf $num = 22 Then
    Return "v"
    ElseIf $num = 23 Then
    Return "w"
    ElseIf $num = 24 Then
    Return "x"
    ElseIf $num = 25 Then
    Return "y"
    ElseIf $num = 26 Then
    Return "z"
    ElseIf $num = 27 Then
    Return "A"
    ElseIf $num = 28 Then
    Return "B"
    ElseIf $num = 29 Then
    Return "C"
    ElseIf $num = 30 Then
    Return "D"
    ElseIf $num = 31 Then
    Return "E"
    ElseIf $num = 32 Then
    Return "F"
    ElseIf $num = 33 Then
    Return "G"
    ElseIf $num = 34 Then
    Return "H"
    ElseIf $num = 35 Then
    Return "I"
    ElseIf $num = 36 Then
    Return "J"
    ElseIf $num = 37 Then
    Return "K"
    ElseIf $num = 38 Then
    Return "L"
    ElseIf $num = 39 Then
    Return "M"
    ElseIf $num = 40 Then
    Return "N"
    ElseIf $num = 41 Then
    Return "O"
    ElseIf $num = 42 Then
    Return "P"
    ElseIf $num = 43 Then
    Return "Q"
    ElseIf $num = 44 Then
    Return "R"
    ElseIf $num = 45 Then
    Return "S"
    ElseIf $num = 46 Then
    Return "T"
    ElseIf $num = 47 Then
    Return "U"
    ElseIf $num = 48 Then
    Return "V"
    ElseIf $num = 49 Then
    Return "W"
    ElseIf $num = 50 Then
    Return "X"
    ElseIf $num = 51 Then
    Return "Y"
    ElseIf $num = 52 Then
    Return "Z"
    Else
    Return ""
    EndIf
    EndFunc

    [/autoit]
  • Deine ToLetter Funktion könnte man noch etwas verkürzen.

    [autoit]

    Func _ToLetter($num)
    $sChars = "abcdef.....z01234579" ;Hier die ganzen zeichen
    $aChars = stringsplit($sChars, "", 2) ;hier ein Array draus basteln
    if $num < ubound ($aChars) then ;wenn außerhalb des arrays -> einfach "" zurückgeben
    return ""
    else
    return $aChars[$num] ;buchstaben an der position im array zurück geben
    EndFunc

    [/autoit]

    Grade gesehen mann könnte auch StringMid nehmen. Dann kommt man auf genau eine Zeile.

    [autoit]

    Func _TolEtter($num)
    return StringMid("abcdef......z012345789", $num, 1)
    Endfunc

    [/autoit]

    Mfg
    monkey

    Monkey - die finale Potenz von göttlich!
    Sloganizer

    Einmal editiert, zuletzt von monkey (3. August 2014 um 15:29)

  • Mal so nebenbei: Die _ToLetter-Funktion kann man drastisch kürzen:

    [autoit]

    Func _ToLetter($n)
    If ($n > 52) Then Return ""
    Return (($n < 27) ? (Chr($n + 96)) : (Chr($n + 38)))
    EndFunc

    [/autoit]


    Schau dir mal den ASCII-Zeichensatz an, wenn du nicht weißt, wieso/wie das funktioniert. ;)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ich weiß, danke trotzdem. Ich bin gerade dabei das ganze ein bisschen auf Schnelligkeit auszureizen:D Mein Ersatz sieht so aus:

    [autoit]


    $string = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    $split = StringSplit($string, "")
    For $i = 1 To $chr
    $r = $r & $split[Random(1, 67, 1)]
    Next
    Return $r

    [/autoit]