_WLAN_GetInfo() - WLAN-Infos über 'netsh' auslesen

  • Hallo, hab mal wieder eine kleine Funktion geschrieben:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>

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

    Local $a = _WLAN_GetInfo()
    _ArrayDisplay($a)

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

    Func _WLAN_GetInfo()
    If @OSBuild < 5600 Then Return SetError(1) ;works only on Vista and above
    Local $iPID = Run(@ComSpec & " /c " & "netsh wlan show networks mode=bssid", "", @SW_HIDE, 0x2)
    Local $sLine
    While 1
    $sLine &= StdoutRead($iPID)
    If @error Then ExitLoop
    WEnd
    $sLine = DllCall('user32.dll', 'Int', 'OemToChar', 'str', $sLine, 'str', '')
    $sLine = $sLine[2]
    Local $aTemp, $aTemp2, $aTemp3
    $aTemp = StringSplit($sLine, @CRLF & @CRLF, 1)
    Local $aWiFi[$aTemp[0] - 1][10]
    For $i = 2 To $aTemp[0] - 1
    $aTemp2 = StringSplit($aTemp[$i], @CRLF, 1)
    For $j = 1 To $aTemp2[0]
    $aTemp3 = StringSplit(StringStripWS($aTemp2[$j], 7), " : ", 3)
    $aWiFi[$i - 1][$j - 1] = $aTemp3[1]
    $aWiFi[0][$j - 1] = $aTemp3[0]
    Next
    Next
    $aWiFi[0][0] = "SSID"
    Return $aWiFi
    EndFunc ;==>_WiFi_GetInfo

    [/autoit]

    Könntet Ihr die Funktion bitte auch auf Win7 testen, damit ich weiß, ob sie da auch funktioniert? Vllt auch auf einem englischen System, falls jemand eines hat. Danke.

  • ich bekomme dashier:

    Code
    Array variable subscript badly formatted.:

    Zeile 18

    EDIT: Joa wenn ich grad überleg an meinem Festen PC an dem ich das grad getestet hab, hab ich gar kein W-Lan^^. Ich probiers gleich noch am Lapi aus ^^

    mfg Darter

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Bei mir klappts aber nicht und ich hab gerade WinXP 32Bit am laufen...

    P.S.: Keine Fehlermeldung vom Wrapper, aber das Script setzt @Error auf 1 und die Funktion gibt 1 zurück ?(

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Also bei mir auf win7 prof 32-bit geht es ohne fehlermeldung

    wie bist du auf das dllcall gekommen?

  • Code
    >"C:\...\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\...\wlan.au3" /autoit3dir "C:\...\AutoIt3" /UserParams	
    +>19:49:43 Starting AutoIt3Wrapper v.2.0.1.24	Environment(Language:0407  Keyboard:00000807  OS:WIN_7/  CPU:X64 OS:X86)
    >Running AU3Check (1.54.19.0)  from:C:\...\AutoIt3
    +>19:49:43 AU3Check ended.rc:0
    >Running:(3.3.6.1):C:\...\autoit3.exe "C:\...\wlan.au3"	
    C:\...\wlan.au3 (24) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $aWiFi[$i - 1][$j - 1] = $aTemp3[1]
    $aWiFi[$i - 1][$j - 1] = ^ ERROR
    ->19:49:44 AutoIT3.exe ended.rc:1
    >Exit code: 1	Time: 1.689

    Windows 7 32-Bit

    gruss kiku

  • Ach so, läuft nur unter Vista oder Win7...
    Nächstes mal vorher bitte sagen, oder eine MsgBox aufgehen lassen...

    Spoiler anzeigen

    Grundkenntnisse in: C++, JavaScript
    Sehr gute Kenntnisse: PHP, JAVA, C und näturlich AutoIt


    Klaviatur, Anhang UDF, GDI+ Mühle

    Zitat

    "Wenn einen um 20h der Pizzadienst anruft und fragt, ob man's nur vergessen hat und ob man das gleiche
    möchte wie immer -- dann sollte man sein Bestellverhalten evtl überdenken"

  • Weshalb WMI?
    Würde eher mal auf Probleme mit der netsh tippen (ist sie vorhanden?).

    funkey
    Vielleicht kannst du ja noch paar Fehler (netsh konnte nicht aufgerufen werden, die Ausgabe bringt nichts vernünftiges zurück etc.) abfangen?


    Also wenn ich direkt via CMD denn netsh befehl aufrufe sieht alles ok aus. Dann sehe ich meine Netzwerke.

  • bei mir funzts nich :(

    win7 professional 64bit

    fehlercode:

    [autoit]

    >"C:\Program Files (x86)\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "D:\AutoIt Skripte\wlan.au3"
    D:\AutoIt Skripte\wlan.au3 (23) : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:
    $aWiFi[$i - 1][$j - 1] = $aTemp3[1]
    $aWiFi[$i - 1][$j - 1] = ^ ERROR
    >Exit code: 1 Time: 0.417

    [/autoit]
  • Vlt liegts daran das was nicht mit der netsh stimmt fügt einfach mal nach

    [autoit]

    Local $iPID = Run(@ComSpec & " /c " & "netsh wlan show networks mode=bssid", "", @SW_HIDE, 0x2)

    [/autoit][autoit]

    If @error Then Return -1

    [/autoit]

    ein. Dann kommt´s vlt nicht mehr zu Fehlermeldungen.