NetworkConnection

  • NetworkConnection ist ein Command Line Tool und eine UDF zugleich.

    Man kann damit z.B. seine IP-Adresse, Standartgateway, DNS-Server, Mac-Adresse etz. ändern.ch.
    Das aktivieren und deaktivieren der Netzwerkkarte ist möglich
    Es liest sämtliche Infos zum Netzwerk aus.

    Funktionen:

    Spoiler anzeigen


    _NC_setNetConnection($s_Parameter) Funktioniert wie die CMD Befehle.
    _NC_setAddress($s_Net_Name, $s_Net_Addr, $s_Net_Mask, $i_Net_Source = 2, $s_Net_Gateway = "none", $i_Net_Gwmetric = 1) Konfiguriert eine IP-Adresse und ein Standardgateway für eine angegebene Schnittstelle.
    _NC_getAddress($s_Net_Name)
    _NC_deleteAddress($s_Net_Name, $s_Net_Addr, $s_Net_Gateway = "all")
    _NC_getDNS($s_Net_Name)
    _NC_setDNS($s_Net_Name, $s_Net_DNS, $i_Net_Source = 2)
    _NC_deleteDNS($s_Net_Name, $s_Net_DNS = "all")
    _NC_getMacInfo($Computer = "", $Konto = "", $Pass = "")
    _NC_getMacAddresss($s_Computer='localhost')
    _NC_setMacAddress($i_MacAddr = "", $s_Controller = "", $i_Default = 0)
    _NC_isConnected()
    _NC_getNetController($s_Computer = 'localhost') Gibt den Namen der momentan verwendeten Netzwerkkarte zurück.
    _NC_getNetConnectionID($s_Computer = 'localhost')
    _NC_NicToggle($s_ConnName = $S_CONNECTIONNAME, $sNetworkFolder = $S_NETWORKFOLDER)



    Es wäre nett, wenn das jemand mal testen könnte und mir feedback über Bugs etz. gibt.


    Hier die Command Line Syntax:

    Spoiler anzeigen


    Cmd Syntax:
    /help=Hilfe
    /name=Schnittstellenname
    /source=[1=dhcp | 2=static]
    /addr=IP-Adresse
    /mask=Subnetzmaske
    /gateway=Standardgateway
    /gwmetric=Gatewaymetrik
    /dns=DNS-Serveradresse
    /deldns=DNS-Serveradresse zum löschen
    /getaddr=Gibt Netzwerkinfos zurück
    /showaddr=Zeige allgemeine Netzinfos an
    /showdns= Zeigt Informationen zu statischen IP-Adressen und Standardgateways für eine angegebene Schnittstelle an.
    /check=Überprüft eine aktive Verbindung zum Internet
    /nictoggle=Aktiviert/Deaktiviert die Netzwerkkarte
    /getmac=Gibt die aktuelle Mac-Adresse zurück
    /setmac=Setzt eine andere Mac-Adresse
    /check=Überprüft eine aktive Verbindung zum Internet

    Example: /name="LAN-Verbindung" /addr="192.168.0.100" /mask="255.255.255.0" /gateway="192.168.0.1" /dns="192.168.0.1"


    In der Zip-Datei sind ein paar Test Verknüpfungen mit Parametern, an denen man nur den Pfad zur Exe ändern muss, vorhanden

    Hier das Skript:

    Spoiler anzeigen
    [autoit]


    #include-once
    #RequireAdmin; for Windows Vista
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Version=beta
    #AutoIt3Wrapper_Icon=Content\Icon\pcp - icon 1.ico
    #AutoIt3Wrapper_Outfile=NetworkConnection.exe
    #AutoIt3Wrapper_Res_Comment=/name=Schnittstellenname /source=[1=dhcp | 2=static] /addr=IP-Adresse /mask=Subnetzmaske /gateway=Standardgateway /gwmetric=Gatewaymetrik /dns=DNS-Serveradresse /deldns=DNS-Serveradresse zum löschen /netinfo=Zeige allgemeine Netzinfos an
    #AutoIt3Wrapper_Res_Description=Konfiguration des TCP/IP-Protokolls
    #AutoIt3Wrapper_Res_Fileversion=0.0.5.60
    #AutoIt3Wrapper_Res_FileVersion_AutoIncrement=y
    #AutoIt3Wrapper_Res_LegalCopyright=CC Attribution 3.0 2008 by Patric Pendelin http://creativecommons.org/licenses/by/3.0/de/
    #AutoIt3Wrapper_Res_Language=1031
    #AutoIt3Wrapper_Res_Field=Firma|.pcp 2008
    #AutoIt3Wrapper_Res_Field=Author|Patric Pendelin
    #AutoIt3Wrapper_Res_Field=Author eMail|patric.pendelin (at) gmx.de
    #AutoIt3Wrapper_Res_Field=Orginaldateiname|NetworkConnection.exe
    #AutoIt3Wrapper_Res_Field=Produktname|NetworkConnection
    #AutoIt3Wrapper_Run_Tidy=y
    #Tidy_Parameters=/rel
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ;
    #cs ----------------------------------------------------------------------------

    AutoIt Version: 3.2.12.1

    Name: pcp NetworkConnection
    Version: 0.0.5.58 (Beta)
    Datum: 03.08.2008

    Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>


    Info:

    Fixes:

    To Do:
    -Funktionsbeschreibung verbessern

    #ce ----------------------------------------------------------------------------
    ;
    ;===============================================================================
    ; NetworkConnection functions:
    ;===============================================================================
    #cs defs to add to au3.api
    _NC_setNetConnection($s_Parameter) Funktioniert wie die CMD Befehle.
    _NC_setAddress($s_Net_Name, $s_Net_Addr, $s_Net_Mask, $i_Net_Source = 2, $s_Net_Gateway = "none", $i_Net_Gwmetric = 1) Konfiguriert eine IP-Adresse und ein Standardgateway für eine angegebene Schnittstelle. (Requires: #include <NetworkConnection.au3>)
    _NC_getAddress($s_Net_Name) (Requires: #include <NetworkConnection.au3>)
    _NC_deleteAddress($s_Net_Name, $s_Net_Addr, $s_Net_Gateway = "all") (Requires: #include <NetworkConnection.au3>)
    _NC_getDNS($s_Net_Name) (Requires: #include <NetworkConnection.au3>)
    _NC_setDNS($s_Net_Name, $s_Net_DNS, $i_Net_Source = 2) (Requires: #include <NetworkConnection.au3>)
    _NC_deleteDNS($s_Net_Name, $s_Net_DNS = "all") (Requires: #include <NetworkConnection.au3>)
    _NC_getMacInfo($Computer = "", $Konto = "", $Pass = "") (Requires: #include <NetworkConnection.au3>)
    _NC_getMacAddress($s_Computer='localhost') (Requires: #include <NetworkConnection.au3>)
    _NC_setMacAddress($i_MacAddr = "", $s_Controller = "", $i_Default = 0) (Requires: #include <NetworkConnection.au3>)
    _NC_isConnected() (Requires: #include <NetworkConnection.au3>)
    _NC_getNetController($s_Computer = 'localhost') Gibt den Namen der momentan verwendeten Netzwerkkarte zurück. (Requires: #include <NetworkConnection.au3>)
    _NC_getNetConnectionID($s_Computer = 'localhost') (Requires: #include <NetworkConnection.au3>)
    _NC_NicToggle($s_ConnName = $S_CONNECTIONNAME, $sNetworkFolder = $S_NETWORKFOLDER) (Requires: #include <NetworkConnection.au3>)
    #ce
    ;===============================================================================
    ;
    ;===============================================================================
    ; Includes
    ;===============================================================================
    ;~ #include <array.au3>
    ;
    ;===============================================================================
    ; AutoItSetOption
    ;===============================================================================
    ;If @Compiled Then Opt("MustDeclareVars", 1)
    ;If Not @Compiled Then Opt("TrayIconHide", 1)
    ;
    ;===============================================================================
    ; Declaring Variables
    ;===============================================================================
    If Not IsDeclared("S_NETWORKFOLDER") Then Global Const $S_NETWORKFOLDER = RegRead('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\ControlPanel\NameSpace\{7007ACC7-3202-11D1-AAD2-00805FC1270E}', '')
    If Not IsDeclared("S_CONNECTIONNAME") Then Global Const $S_CONNECTIONNAME = RegRead('HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Network\{4D36E972-E325-11CE-BFC1-08002BE10318}\{25C68103-281D-470A-9837-430A00ABFD59}\Connection', 'Name')
    ;
    ;===============================================================================
    ; Start Program
    ;===============================================================================
    ;~ If @Compiled Then _NC_Main()
    _NC_Main()
    ;
    ;===============================================================================
    ; Functions
    ;===============================================================================
    Func _NC_Main()
    ;_NC_checkIfProgAllreadyExist('pcp NetworkConnection - dsklhvcdi', 'Eine Instanz des Programm läuft bereits!', 10)
    If Not $CmdLine[0] Then
    Local $res = -1
    ;
    ;===============================================================================
    ; Examples:
    ;
    ;~ $res = _NC_setNetConnection('/name="LAN-Verbindung" /addr="192.168.0.100" /mask="255.255.255.0" /gateway="192.168.0.1" /dns="192.168.0.1"')
    ;~ $res = _NC_setNetConnection('/name="LAN-Verbindung" /addr="192.168.0.101" /deldns="192.168.0.1"')
    ;~ $res = _NC_setNetConnection('/name="LAN-Verbindung" /showaddr')
    ;~ $res = _NC_setNetConnection('/check')
    ;~ $res = _NC_setNetConnection('/getmac')
    ;~ $res = _NC_setNetConnection('/showmac')
    ;~ $res = _NC_setNetConnection('/name="LAN-Verbindung" /getaddr')
    ;~ MsgBox(0, "", _NC_getNetController())
    ;~ MsgBox(0, "", _NC_isConnected())
    ;~ $res = _NC_setNetConnection('/name="LAN-Verbindung" /showdns')
    ;
    ;===============================================================================
    ;
    If $res = 1 Then
    MsgBox(0, "Status", "OK", 5)
    ElseIf $res == 0 Then
    MsgBox(0, "Status", "Error", 5)
    EndIf
    Else
    _NC_startCmd()
    EndIf
    EndFunc ;==>_NC_Main
    ;
    ;===============================================================================
    ; Function Name: _NC_startCmd
    ; Description: Command Line Parameters
    ;
    ; Cmd Syntax: /name=Schnittstellenname
    ; /source=[1=dhcp | 2=static]
    ; /addr=IP-Adresse
    ; /mask=Subnetzmaske
    ; /gateway=Standardgateway
    ; /gwmetric=Gatewaymetrik
    ; /dns=DNS-Serveradresse
    ; /deldns=DNS-Serveradresse zum löschen
    ; /showaddr=Zeige allgemeine Netzinfos an
    ; /showdns= Zeigt Informationen zu statischen IP-Adressen und Standardgateways für eine angegebene Schnittstelle an.
    ; /result=[1/0] Zeigt bei eine MessageBox
    ; /check=Überprüft eine aktive Verbindung zum Internet
    ; /setmac=Ändert die aktuelle Mac-Adresse.
    ; /showmac=Zeigt die aktuelle Mac-Adresse an.
    ;
    ; Example: /name="LAN-Verbindung" /addr="192.168.0.100" /mask="255.255.255.0" /gateway="192.168.0.1" /dns="192.168.0.1"
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_startCmd()
    Local $s_CmdString
    ;
    For $i = 1 To $CmdLine[0]
    $s_CmdString &= $CmdLine[$i] & ' '
    Next
    Local $res = _NC_setNetConnection($s_CmdString)
    If $res = 1 Then
    MsgBox(0, "Status", "OK", 5)
    ElseIf $res = 0 Then
    MsgBox(0, "Status", "Error", 5)
    EndIf
    EndFunc ;==>_NC_startCmd
    ;
    ;===============================================================================
    ; Function Name: _NC_setNetConnection
    ; Description:
    ;
    ; Syntax:
    ; Parameter: $s_Parameter -->
    ; /name=Schnittstellenname
    ; /source=[1=dhcp | 2=static]
    ; /addr=IP-Adresse
    ; /mask=Subnetzmaske
    ; /gateway=Standardgateway
    ; /gwmetric=Gatewaymetrik
    ; /dns=DNS-Serveradresse
    ; /deldns=DNS-Serveradresse zum löschen
    ; /getaddr=Gibt Netzwerkinfos zurück
    ; /showaddr Zeigt Netzwerkinfos an
    ; /showdns Zeigt Informationen zu statischen IP-Adressen und Standardgateways für eine angegebene Schnittstelle an.
    ; /result=[1/0] Zeigt bei eine MessageBox
    ; /check=Überprüft eine aktive Verbindung zum Internet
    ; /setmac=Ändert die aktuelle Mac-Adresse.
    ; /showmac=Zeigt die aktuelle Mac-Adresse an.
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_setNetConnection($s_Parameter)
    Local $s_Net_Name = -1, $i_Net_Source = 2, $s_Net_Addr = -1, $s_Net_Mask = "255.255.255.0", $s_Net_Gateway = "none", $i_Net_Gwmetric = 1
    Local $s_Net_DNS = -1, $s_Net_DelDNS = -1, $i_Net_ShowAddr = 0, $i_Net_ShowDNS = 0, $i_Net_Help = 0, $i_Net_Result = 0
    Local $result = -1, $i_Net_Check = -1, $i_Net_GetMac = -1, $i_Net_SetMac = -1, $i_Net_ShowMac = -1, $i_Net_GetAddr = -1, $i_Net_NicToggle = -1
    Local $i_Net_NetContrl = "", $i_Net_MacAddr = ""
    Local $av_Parameter = _NC_ParseParameterLine($s_Parameter)
    ;
    For $i = 0 To UBound($av_Parameter) - 1
    Select
    Case $av_Parameter[$i][1] = "name"
    $s_Net_Name = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "source"
    $i_Net_Source = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "addr"
    $s_Net_Addr = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "mask"
    $s_Net_Mask = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "gateway"
    $s_Net_Gateway = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "gwmetric"
    $i_Net_Gwmetric = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "dns"
    $s_Net_DNS = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "deldns"
    $s_Net_DelDNS = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "getaddr"
    $i_Net_GetAddr = 1
    Case $av_Parameter[$i][1] = "showaddr"
    $i_Net_ShowAddr = 1
    Case $av_Parameter[$i][1] = "showdns"
    $i_Net_ShowDNS = 1
    Case $av_Parameter[$i][1] = "help"
    $i_Net_Help = 1
    Case $av_Parameter[$i][1] = "result"
    $i_Net_Result = 1
    Case $av_Parameter[$i][1] = "check"
    $i_Net_Check = 1
    Case $av_Parameter[$i][1] = "setmac"
    $i_Net_SetMac = 1
    Case $av_Parameter[$i][1] = "getmac"
    $i_Net_GetMac = 1
    Return _NC_getMacAddress()
    Case $av_Parameter[$i][1] = "showmac"
    $i_Net_ShowMac = 1
    Case $av_Parameter[$i][1] = "macaddr"
    $i_Net_MacAddr = $av_Parameter[$i][3]
    Case $av_Parameter[$i][1] = "nictoggle"
    $i_Net_NicToggle = 1
    Case $av_Parameter[$i][1] = "netcontrl"; Netzwerk-Controler
    $i_Net_NetContrl = $av_Parameter[$i][3]
    Case Else
    EndSelect
    Next
    ; Auswertung:
    ;
    If $s_Net_Addr <> -1 Then _NC_setAddress($s_Net_Name, $s_Net_Addr, $s_Net_Mask, $i_Net_Source, $s_Net_Gateway, $i_Net_Gwmetric)
    If @error Then Return SetError(1, 0, 0)
    ;
    If $s_Net_DNS <> -1 Then _NC_setDNS($s_Net_Name, $s_Net_DNS, $i_Net_Source)
    If @error Then Return SetError(4, 0, 0)
    ;
    If $s_Net_DelDNS <> -1 Then _NC_deleteDNS($s_Net_Name, $s_Net_DelDNS)
    If @error Then Return SetError(5, 0, 0)
    ;
    If $i_Net_GetAddr = 1 Then
    Local $ai_Res = _NC_getAddress($s_Net_Name)
    ReDim $ai_Res[UBound($ai_Res) + 1][2]
    $ai_Res[7][0] = "DNS-Server"
    $ai_Res[7][1] = _NC_getDNS($s_Net_Name)
    If @error Then Return SetError(6, 0, 0)
    Return -1
    EndIf
    ;
    If $i_Net_ShowAddr = 1 Then
    Local $ai_Res = _NC_getAddress($s_Net_Name)
    Local $str
    For $i = 0 To UBound($ai_Res) - 1
    $str &= $ai_Res[$i][0] & ':' & @TAB & $ai_Res[$i][1] & @CRLF
    Next
    $ai_Res = _NC_getDNS($s_Net_Name)
    For $i = 0 To UBound($ai_Res) - 1
    $str &= 'DNS-Server ' & ($i + 1) & ':' & @TAB & $ai_Res[$i] & @CRLF
    Next
    MsgBox(64 + 262144, "Address Info", $str)
    Return -1
    EndIf
    ;
    If $i_Net_ShowDNS = 1 Then
    MsgBox(262144, "DNS Info", _NC_getDNS($s_Net_Name))
    If @error Then Return SetError(8, 0, 0)
    Return -1
    EndIf
    ; ***********
    If $i_Net_SetMac = 1 Then _NC_setMacAddress($i_Net_MacAddr, $i_Net_NetContrl)
    If @error Then Return SetError(9, 0, 0)
    ;
    If $i_Net_ShowMac = 1 Then MsgBox(0, "Mac-Adresse", _NC_getMacAddress())
    ; _NC_getMacAddress($s_Computer='localhost')
    If @error Then Return SetError(9, 0, 0)
    ; ***********
    If $i_Net_Check = 1 Then
    If _NC_isConnected() = 1 Then
    MsgBox(262144, "Internet check", "Verbindung zum Internet!")
    Else
    MsgBox(262144, "Internet check", "Keine Verbindung zum Internet!")
    EndIf
    Return -1
    EndIf
    ;
    If $i_Net_Help = 1 Then
    MsgBox(32 + 262144, "Help", '/addr=IP-Adresse' & @CRLF & _
    '/check=Überprüft eine aktive Verbindung zum Internet' & @CRLF & _
    '/deldns=DNS-Serveradresse zum löschen' & @CRLF & _
    '/dns=DNS-Serveradresse' & @CRLF & _
    '/gateway=Standardgateway' & @CRLF & _
    '/gwmetric=Gatewaymetrik' & @CRLF & _
    '/help=Hilfe' & @CRLF & _
    '/mask=Subnetzmaske' & @CRLF & _
    '/name=Schnittstellenname' & @CRLF & _
    '/result=[1/0] Zeigt bei eine MessageBox' & @CRLF & _
    '/showaddr=Zeigt Netzwerkinfos an' & @CRLF & _
    '/showdns=Zeigt die DNS Adresse an' & @CRLF & _
    '/source=[1=dhcp | 2=static]' & @CRLF)
    Return -1
    EndIf
    ;
    If $i_Net_NicToggle = 1 Then _NC_NicToggle()
    If @error Then Return SetError(10, 0, 0)
    ;
    If $i_Net_Result = 1 Then Return 2; noch nicht gelöst
    Return 1
    EndFunc ;==>_NC_setNetConnection
    ;
    ;===============================================================================
    ; Function Name: _NC_setAddress
    ; Description: Konfiguriert eine IP-Adresse und ein Standardgateway für eine angegebene Schnittstelle.
    ;
    ; Syntax: _NC_setAddress($s_Net_Name, $s_Net_Addr, $s_Net_Mask, $i_Net_Source = 2, $s_Net_Gateway = "none", $i_Net_Gwmetric = 1)
    ; Parameter(s): $s_Net_Name -> Schnittstellenname
    ; $s_Net_Addr -> IP-Addresse
    ; $s_Net_Mask -> Subnetzmaske
    ; $i_Net_Source -> [1=dhcp | 2=static]
    ; $s_Net_Gateway -> Standardgateway
    ; $i_Net_Gwmetric -> Gatewaymetrik
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; netsh Basis: set address [name=]Schnittstellenname [source=]{dhcp | static [addr=]IP-Adresse [mask=]Subnetzmaske [gateway=]{none | Standardgateway [[gwmetric=]Gatewaymetrik]}}
    ;===============================================================================
    Func _NC_setAddress($s_Net_Name, $s_Net_Addr, $s_Net_Mask, $i_Net_Source = 2, $s_Net_Gateway = "none", $i_Net_Gwmetric = 1)
    Local $s_SetAddress, $pid, $STDOUT
    If $i_Net_Source = 1 Then
    $i_Net_Source = "dhcp"
    ElseIf $i_Net_Source = 2 Then
    $i_Net_Source = "static"
    EndIf
    Local Const $s_Netsh = @SystemDir & "\netsh.exe"
    If Not FileExists($s_Netsh) Then Return SetError(1, 0, 0)
    ;
    If $s_Net_Gateway <> "none" Then
    $s_SetAddress = ' interface ip set address name=' & $s_Net_Name & ' source=' & $i_Net_Source & ' addr=' & $s_Net_Addr & ' mask=' & $s_Net_Mask & ' gateway=' & $s_Net_Gateway & ' gwmetric=' & $i_Net_Gwmetric
    Else
    $s_SetAddress = ' interface ip set address name=' & $s_Net_Name & ' source=' & $i_Net_Source & ' addr=' & $s_Net_Addr & ' mask=' & $s_Net_Mask
    EndIf
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    ;MsgBox(0, "_setAddress - $STDOUT", $STDOUT)
    If StringLeft($STDOUT, 3) <> "OK." Then Return SetError(3, 0, 0)
    Return 1
    EndFunc ;==>_NC_setAddress
    ;
    ;===============================================================================
    ; Function Name: _NC_getAddress
    ; Description: Zeigt Informationen zu statischen IP-Adressen und Standardgateways
    ; für eine angegebene Schnittstelle an. Wenn show address ohne Parameter verwendet wird,
    ; werden Adressinformationen für alle Schnittstellen angezeigt.
    ;
    ; Syntax: _NC_getAddress($s_Net_Name)
    ; Parameter(s): $s_Net_Name -> Schnittstellenname
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; netsh Basis: show address [[name=]Schnittstellenname]
    ;===============================================================================
    Func _NC_getAddress($s_Net_Name)
    Local $s_SetAddress, $pid, $STDOUT, $ai_Res1, $ai_Res2[1][2], $ai_Res3[1][2], $s_Result
    Local $f = 0
    ;
    Local Const $s_Netsh = @SystemDir & "\netsh.exe"
    If Not FileExists($s_Netsh) Then SetError(1, 0, 0)
    ;
    $s_SetAddress = ' interface ip show address name=' & "LAN-Verbindung"
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    $ai_Res1 = StringRegExp($STDOUT, '(?:\b(.*)\"{2}\b)(.*)\"{2}|(?:\b(.*)[\:|\"])(?: {1,40})([\w|\.]*)', 3); bestes ergebnis
    ;
    For $i = 0 To UBound($ai_Res1) - 1 Step 2
    ReDim $ai_Res2[$i + 1][2]
    $ai_Res2[$i][0] = $ai_Res1[$i]
    $ai_Res2[$i][1] = $ai_Res1[$i + 1]
    If $ai_Res2[$i][0] <> "" Then
    ReDim $ai_Res3[$f + 1][2]
    $ai_Res3[$f][0] = $ai_Res2[$i][0]
    $ai_Res3[$f][1] = $ai_Res2[$i][1]
    $f += 1
    EndIf
    Next
    ;_ArrayDisplay($ai_Res3, " _NC_getAddress")
    Return $ai_Res3
    EndFunc ;==>_NC_getAddress
    ;
    ;===============================================================================
    ; Function Name: _NC_deleteAddress
    ; Description: Löscht eine IP-Adresse und ein Standardgateway für eine als statisch konfigurierte Schnittstelle.
    ;
    ; Syntax: _NC_deleteAddress($s_Net_Name, $s_Net_Addr, $s_Net_Gateway = "all")
    ; Parameter(s): $s_Net_Name -> Schnittstellenname
    ; $s_Net_Addr -> IP-Addresse to delete
    ; $s_Net_Gateway -> Standardgateway to delete
    ;
    ; Return Value(s): Error: 0 and @error:
    ; 1 -> neths.exe not exists
    ; 2 -> Run error
    ; 3 -> Can´t delete Addresse
    ; Success: Return 1
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; netsh Basis: delete address [name=]Schnittstellenname [addr=] IP-Adresse [[gateway=]{Standardgateway | all}]
    ;===============================================================================
    Func _NC_deleteAddress($s_Net_Name, $s_Net_Addr, $s_Net_Gateway = "all")
    Local $s_SetAddress, $pid, $STDOUT
    Local Const $s_Netsh = @SystemDir & "\netsh.exe"
    If Not FileExists($s_Netsh) Then SetError(1, 0, 0)
    ;
    $s_SetAddress = ' interface ip delete address name=' & $s_Net_Name & ' addr=' & $s_Net_Addr & ' gateway=' & $s_Net_Gateway
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    ;MsgBox(0, "_NC_deleteAddress - $STDOUT", $STDOUT)
    If StringLeft($STDOUT, 3) <> "OK." Then Return SetError(3, 0, 0)
    Return 1
    EndFunc ;==>_NC_deleteAddress
    ;
    ;===============================================================================
    ; Function Name: _NC_getDNS
    ; Description: Zeigt Informationen zu statischen IP-Adressen und Standardgateways
    ; für eine angegebene Schnittstelle an. Wenn show address ohne Parameter verwendet wird,
    ; werden Adressinformationen für alle Schnittstellen angezeigt.
    ;
    ; Syntax: _NC_getDNS($s_Net_Name)
    ; Parameter(s): $s_Net_Name -> Schnittstellenname
    ;
    ; Return Value(s): Error: 0 and @error:
    ; 1 -> neths.exe not exists
    ; 2 -> Run error
    ; 3 -> StringRegExp-Error
    ; Success: Array:
    ; $array[$i] -> 1. DNS-Server Addresse
    ; $array[$i] -> 2. DNS-Server Addresse
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; netsh Basis: show dns [[name=]Schnittstellenname]
    ;===============================================================================
    Func _NC_getDNS($s_Net_Name)
    Local $s_SetAddress, $pid, $STDOUT, $ai_Res, $s_Result
    ;
    Local Const $s_Netsh = @SystemDir & "\netsh.exe"
    If Not FileExists($s_Netsh) Then SetError(1, 0, 0)
    ;
    $s_SetAddress = ' interface ip show dns name=' & $s_Net_Name
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    $ai_Res = StringRegExp($STDOUT, '(?:\d){1,3}(?:\.){1}+(?:\d){1,3}(?:\.){1}+(?:\d){1,3}(?:\.){1}+(?:\d){1,3}', 3)
    If @error Then Return SetError(3, 0, 0)
    ;_ArrayDisplay($ai_Res, "_NC_getDNS")
    Return $ai_Res
    EndFunc ;==>_NC_getDNS
    ;
    ;===============================================================================
    ; Function Name: _NC_setDNS
    ; Description: Konfiguriert eine DNS-Serveradresse für die angegebene Schnittstelle.
    ;
    ; Syntax: _NC_setDNS($s_Net_Name, $s_Net_DNS, $i_Net_Source=2)
    ;
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; netsh Basis: set dns [name=]Schnittstellenname [source=]{dhcp | static [addr=]{DNS-Adresse | none}} [[ddns=]{disabled | enabled}] [[suffix=]{interface | primary}]
    ;===============================================================================
    Func _NC_setDNS($s_Net_Name, $s_Net_DNS, $i_Net_Source = 2)
    Local $s_SetAddress, $pid, $STDOUT, $av_Res, $s_Result
    If $i_Net_Source = 1 Then
    $i_Net_Source = "dhcp"
    ElseIf $i_Net_Source = 2 Then
    $i_Net_Source = "static"
    EndIf
    Local Const $s_Netsh = @SystemDir & "\netsh.exe"
    If Not FileExists($s_Netsh) Then SetError(1, 0, 0)
    ;
    $s_SetAddress = ' interface ip set dns name=' & $s_Net_Name & ' source=' & $i_Net_Source & ' addr=' & $s_Net_DNS
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    ;MsgBox(0, "_NC_setDNS - $STDOUT", $STDOUT)
    If StringLeft($STDOUT, 3) <> "OK." Then Return SetError(3, 0, 0)
    Return 1
    EndFunc ;==>_NC_setDNS
    ;
    ;===============================================================================
    ; Function Name: _NC_deleteDNS
    ; Description: Löscht einen DNS-Server oder alle DNS-Server aus einer Liste der
    ; DNS-Server für die angegebene Schnittstelle oder für alle Schnittstellen.
    ;
    ; Syntax: _NC_deleteDNS($s_Net_Name, $s_Net_DNS = "all")
    ;
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; netsh Basis: delete dns [name=]Schnittstellenname [addr=]{DNS-Adresse | all}
    ;===============================================================================
    Func _NC_deleteDNS($s_Net_Name, $s_Net_DNS = "all")
    Local $s_SetAddress, $pid, $STDOUT
    Local Const $s_Netsh = @SystemDir & "\netsh.exe"
    If Not FileExists($s_Netsh) Then SetError(1, 0, 0)
    ;
    $s_SetAddress = ' interface ip delete dns name=' & $s_Net_Name & ' addr=' & $s_Net_DNS
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    ;MsgBox(0, "_NC_deleteDNS - $STDOUT", $STDOUT)
    If StringLeft($STDOUT, 3) <> "OK." Then Return SetError(3)
    Return 1
    EndFunc ;==>_NC_deleteDNS
    ;
    ;===============================================================================
    ; Function Name: _NC_getMac
    ; Description: Gibt für alle Adressen aller Netzwerkkarten eines Computers die MAC-Adresse (Media Access Control)
    ; und die Liste der zugeordneten Netzwerkprotokolle zurück. Beim Computer kann es sich um den
    ; lokalen Computer oder einen Computer im Netzwerk handeln.
    ;
    ; Syntax: _NC_getMacInfo($Computer = "", $Konto = "", $Pass = "")
    ;
    ;
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;
    ; getmac Basis: getmac[.exe] [/s Computer [/u Domäne\Benutzer [/p Kennwort]]] [/fo {TABLE|LIST|CSV}] [/nh] [/v]
    ;===============================================================================
    Func _NC_getMacInfo($Computer = "", $Konto = "", $Pass = "")
    Local $s_SetAddress, $pid, $STDOUT, $av_Res, $s_Result
    Local Const $s_Netsh = @SystemDir & "\getmac.exe"
    If Not FileExists($s_Netsh) Then SetError(1, 0, 0)
    $s_SetAddress = ' ' & $Computer & ' ' & $Konto & ' ' & $Pass & ' /fo LIST /v'
    $pid = Run($s_Netsh & $s_SetAddress, @SystemDir, @SW_HIDE, 2)
    If @error Then Return SetError(2, 0, 0)
    While ProcessExists($pid)
    Sleep(100)
    WEnd
    $STDOUT = StdoutRead($pid)
    ;MsgBox(0, " _NC_getMac - $STDOUT", $STDOUT)
    Return $STDOUT
    EndFunc ;==>_NC_getMacInfo
    ;
    ;===============================================================================
    ; Function Name: _NC_getMacAddress
    ; Description: Gibt die MAC-Addresse zurück.
    ;
    ; Syntax: _NC_getMacAddress($s_Computer='localhost')
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_getMacAddress($s_Computer = 'localhost')
    Local Const $wbemFlagReturnImmediately = 0x10
    Local Const $wbemFlagForwardOnly = 0x20
    Local $colItems = ''
    Local $objWMIService = ObjGet('winmgmts:\\' & $s_Computer & '\root\CIMV2')
    If @error Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter ' & _
    'WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> ' & _
    '"Microsoft"))', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    Return $objItem.MACAddress; MACAddress
    Next
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc ;==>_NC_getMacAddress
    ;
    ;===============================================================================
    ; Function Name: _NC_setMacAddress
    ; Description: Generiert eine neue Mac-Addresse
    ;
    ;
    ; Syntax: _NC_setMacAddress($i_MacAddr = "", $s_Controller = "", $i_Default = 0)
    ;
    ; Parameter(s): $i_MacAddr - Mac-Adresse
    ; $s_Controller - Ethernet Karte
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_setMacAddress($i_MacAddr = "", $s_Controller = "", $i_Default = 0)
    Local Const $S_KEY = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002bE10318}'
    Local $res
    If $s_Controller = "" Then
    $s_Controller = _NC_getNetController()
    If @error Then Return SetError(1, 0, 0)
    EndIf
    If $i_MacAddr = "" Then
    Local $av_Alnum[16] = ["A", "B", "C", "D", "E", "F", 1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
    For $i = 1 To 12
    $i_MacAddr &= $av_Alnum[Random(0, 15, 1)]
    Next
    EndIf
    If $s_Controller <> "" Then
    Local $i = 1
    While 1
    $res = RegEnumKey($S_KEY, $i)
    If @error <> 0 Then ExitLoop
    If RegRead($S_KEY & '\' & $res, 'DriverDesc') = $s_Controller Then
    If $i_Default = 1 Then
    RegDelete($S_KEY & '\' & $res, 'NetworkAddress')
    Else
    RegWrite($S_KEY & '\' & $res, 'NetworkAddress', 'REG_SZ', $i_MacAddr)
    EndIf
    Return 1
    EndIf
    $i += 1
    WEnd
    Else
    SetError(2, 0, 0)
    EndIf
    EndFunc ;==>_NC_setMacAddress
    ;
    ;===============================================================================
    ; Function Name: _NC_isConnected
    ; Description: Retrieves the connected state of the local system.
    ;
    ;
    ; Return Value(s): Return 1 --> connected
    ; Return 0 --> Not connected
    ;
    ;
    ; --> DLL Info:
    ; Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
    ; · lpdwFlags
    ; [out] Pointer to an unsigned long integer variable where the connection description should be returned. This can be a combination of the following values:
    ; INTERNET_CONNECTION_CONFIGURED
    ; Local system has a valid connection to the Internet, but it may or may not be currently connected.
    ; INTERNET_CONNECTION_LAN
    ; Local system uses a local area network to connect to the Internet.
    ; INTERNET_CONNECTION_MODEM
    ; Local system uses a modem to connect to the Internet.
    ; INTERNET_CONNECTION_MODEM_BUSY
    ; No longer used.
    ; INTERNET_CONNECTION_OFFLINE
    ; Local system is in offline mode.
    ; INTERNET_CONNECTION_PROXY
    ; Local system uses a proxy server to connect to the Internet.
    ; INTERNET_RAS_INSTALLED
    ; Local system has RAS installed.
    ;
    ; · dwReserved
    ; [in] Reserved. Must be set to zero.
    ;
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_isConnected()
    Local $dwReserved = 0
    Local $lpdwFlags = 0
    Local $size = InetGetSize("http://anonym.to/")
    Local $dll = DllOpen("WinInet.dll")
    If $dll = -1 Then Return SetError(1, 0, 0)
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags, "int", $dwReserved)
    If @error > 0 Then Return SetError(2, 0, 0)
    DllClose($dll)
    If $call[0] = 1 Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc ;==>_NC_isConnected
    ;
    ;===============================================================================
    ; Function Name: _NC_getNetController
    ; Description: Gibt den Namen der momentan verwendeten Netzwerkkarte zurück.
    ;
    ; Syntax: _NC_getNetController($s_Computer='localhost')
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_getNetController($s_Computer = 'localhost')
    Local Const $wbemFlagReturnImmediately = 0x10
    Local Const $wbemFlagForwardOnly = 0x20
    Local $colItems = ''
    Local $objWMIService = ObjGet('winmgmts:\\' & $s_Computer & '\root\CIMV2')
    If @error Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter ' & _
    'WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> ' & _
    '"Microsoft"))', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    Return $objItem.Description; Description
    Next
    Else
    Return SetError(2, 0, 0)
    EndIf
    EndFunc ;==>_NC_getNetController
    ;
    ;===============================================================================
    ; Function Name: _NC_getNetConnectionID
    ; Description:
    ;
    ; Syntax: _NC_getNetConnectionID($s_Computer='localhost')
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_getNetConnectionID($s_Computer = 'localhost')
    Local Const $wbemFlagReturnImmediately = 0x10
    Local Const $wbemFlagForwardOnly = 0x20
    Local $colItems = ''
    Local $objWMIService = ObjGet('winmgmts:\\' & $s_Computer & '\root\CIMV2')
    If @error Then Return SetError(1, 0, 0)
    $colItems = $objWMIService.ExecQuery('SELECT * FROM Win32_NetworkAdapter ' & _
    'WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> ' & _
    '"Microsoft"))', 'WQL', $wbemFlagReturnImmediately + $wbemFlagForwardOnly)
    If IsObj($colItems) Then
    For $objItem In $colItems
    Return $objItem.NetConnectionID;
    Next
    Else
    Return SetError(1, 0, 0)
    EndIf
    EndFunc ;==>_NC_getNetConnectionID
    ;
    ;===============================================================================
    ; Function Name: _NC_GetLastError
    ; Description: The GetLastError function returns the calling thread’s last-error code value.
    ; The last-error code is maintained on a per-thread basis.
    ; Multiple threads do not overwrite each other’s last-error code.
    ;
    ; Syntax: _NC_GetLastError()
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_GetLastError()
    Local $dll = DllOpen("kernel32.dll")
    If $dll = -1 Then Return SetError(1, 0, 0)
    Local $call = DllCall($dll, "int", "GetLastError")
    If @error > 0 Then Return SetError(2, 0, 0)
    DllClose($dll)
    MsgBox(0, "", $call[0])
    Return $call
    EndFunc ;==>_NC_GetLastError
    ;
    ;===============================================================================
    ; Function Name: _NC_NicToggle
    ; Description: turns a network connection on or off
    ;
    ; Syntax: _NC_NicToggle($Toggle=0, $s_ConnectionName = $S_CONNECTIONNAME, $sNetworkFolder = $S_NETWORKFOLDER)
    ;
    ;
    ; From: http://www.autoitscript.com/forum/index.ph…ndpost&p=525659
    ;
    ; turns a network connection on or off
    ; I used a converted vbs scripts method for doing thisit can be found at
    ; http://channel9.msdn.com/ShowPost.aspx?PostID=158556
    ; Or
    ; http://groups.google.com/group/microsoft.p...b3fab1141c6c93e
    ; the 2nd param is the network connections name
    ; the third param is dependant on what os you use... the folder is called different things on different versions of windows
    ; I have not tried changing the thrid parameter because i run soley xp, and I dont have a clue if changing it will make it work on win2000 and such
    ;
    ; Author(s): ptrex
    ; Modified by Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_NicToggle($s_ConnName = $S_CONNECTIONNAME, $sNetworkFolder = $S_NETWORKFOLDER)
    Local $Toggle = 0
    Local $ssfCONTROLS = 3
    Local $sEnableVerb = 0
    Local $sDisableVerb = 0
    Local $shellApp = ObjCreate("shell.application")
    Local $oControlPanel = $shellApp.Namespace($ssfCONTROLS)
    Local $oNetConnections = "nothing"
    Local $folderitem
    For $folderitem In $oControlPanel.items
    If $folderitem.name = $sNetworkFolder Then
    $oNetConnections = $folderitem.getfolder
    ExitLoop
    EndIf
    Next
    If $oNetConnections = "nothing" Then
    ;MsgBox(48, "Error", "Couldn't find " & $sNetworkFolder & " folder")
    Return SetError(1, 0, 0)
    EndIf
    Local $oLanConnection = "nothing"
    For $folderitem In $oNetConnections.items
    If StringLower($folderitem.name) = StringLower($s_ConnName) Then
    $oLanConnection = $folderitem
    ExitLoop
    EndIf
    Next
    If $oLanConnection = "nothing" Then
    ;MsgBox(48, "Error", "Couldn't find '" & $s_ConnName & "' item")
    Return SetError(2, 0, 0)
    EndIf
    Local $bEnabled = True
    Local $oEnableVerb = "nothing"
    Local $oDisableVerb = "nothing"
    Local $s = "Verbs: " & @CRLF
    Local $verb
    For $verb In $oLanConnection.verbs
    $s = $s & @CRLF & $verb.name
    ;enables
    If $verb.name = $sEnableVerb And $Toggle = 1 Then
    $oEnableVerb = $verb
    $oEnableVerb.DoIt
    ExitLoop
    ;disables
    ElseIf $verb.name = $sDisableVerb And $Toggle = 0 Then
    $oDisableVerb = $verb
    $oDisableVerb.DoIt
    ExitLoop
    Else
    ;MsgBox(48, "Error", "Tried to disable when already disabled" & @CRLF & "or enable when already enabled")
    Return SetError(3, 0, 0)
    EndIf
    Next
    Sleep(1000)
    Return 1
    EndFunc ;==>_NC_NicToggle
    ;
    ;===============================================================================
    ; UDFs
    ;===============================================================================
    ;===============================================================================
    ; Function Name: _NC_checkIfProgAllreadyExist
    ; Description: Prüft ob das Programm bereits läuft indem der Titel des AutoIt-Fensters verglichen wird.
    ; Bei einer übereinstimmung gibt es eine MessageBox aus und schließt das Programm.
    ;
    ; Syntax: _NC_checkIfProgAllreadyExist($s_Au3WinTitle, $s_Text)
    ;
    ; Parameter: $s_Au3WinTitle - Der Titel des AutoIt-Fensters
    ; $s_Text - Der Text der MessageBox
    ;
    ;
    ; Author(s): Markus Egert
    ; Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func _NC_checkIfProgAllreadyExist($s_Au3WinTitle, $s_Text, $i_Timeout = '')
    If WinExists($s_Au3WinTitle) Then
    If @error Then Return SetError(1)
    MsgBox(262144 + 48, 'Error', $s_Text, $i_Timeout)
    Exit
    EndIf
    AutoItWinSetTitle($s_Au3WinTitle)
    If @error Then Return SetError(2)
    ;
    Return 1
    EndFunc ;==>_NC_checkIfProgAllreadyExist
    ;
    ;===============================================================================
    ; Function Name: mbx
    ; Description: Vereinfachter Aufruf der MessageBox
    ;
    ; Syntax: mbx($string, $title = "", $flag = 0)
    ;
    ; Parameter: $string - Der Titel des AutoIt-Fensters
    ; $title - Der Text der MessageBox
    ; $flag - Der Text der MessageBox
    ;
    ;
    ; Author(s): Patric Pendelin <patric.pendelin (at) gmx.de>
    ;===============================================================================
    Func mbx($string, $title = "", $flag = 0)
    MsgBox($flag, $title, $string)
    EndFunc ;==>mbx
    ;===============================================================================
    ; Function Name: _NC_ParseParameterLine($CMDString)
    ; Description:: Parses a CMD-String to Parameters with Values
    ;
    ; Parameter(s): $CMDString -> String to parse
    ; Requirement(s): ?
    ;
    ; Return Value(s): Error: o and @error = StringRegExp-Error
    ; Success: 2 Dimensional Array:
    ; $array[$i][0] : Parameter includind value
    ; $array[$i][1] : Parameter
    ; $array[$i][2] : Value with quotation marks (only if value has quotaion marks)
    ; $array[$i][3] : Value without quotation marks
    ;
    ; Author(s): Prog@ndy
    ; Modified by Patric Pendelin
    ;
    ; Basis: http://regexlib.com/REDetails.aspx?regexp_id=1220
    ;===============================================================================
    ;
    Func _NC_ParseParameterLine($CMDString)
    Local $y, $j, $i, $entry
    Local $x = StringRegExp($CMDString, '(?:\s*)(?<=[-|/])(?<name>\w*)(?:(?:[:|=](?:("(?<value1>.*?)(?<!\\)")|(?<value>[\w\d|\.\-]*)))|\w*?)', 4)
    If @error Then Return SetError(@error, 0, 0)
    Local $ResultArray[UBound($x)][4]
    For $i = 0 To UBound($x) - 1
    $entry = $x[$i]
    For $y = 0 To UBound($entry) - 1
    $j = $y
    If $y > 3 Then $j = 3
    $ResultArray[$i][$j] = $entry[$y]
    Next
    Next
    Return $ResultArray
    EndFunc ;==>_NC_ParseParameterLine

    [/autoit]


    Files: autoit.de/wcf/attachment/2795/(16,38 kB)

    2 Mal editiert, zuletzt von prizma (19. August 2008 um 17:57)

  • Wäre nett, wenn Du die "Command Line Befehle" posten würdest, damit Userinnen wie ich auch feedbäääääcken können.

    LG, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Wäre nett, wenn Du die "Command Line Befehle" posten würdest, damit Userinnen wie ich auch feedbäääääcken können.

    LG, Crazy-A.


    Hiermit getan :rolleyes:

    Wie schon mal geschrieben wäre es nett ein paar Zeilen über das Funktionieren bzw. nicht funktionieren des Skriptes zu bekommen.
    Vieleicht sind die Funktionsbeschreibungen auch nicht so verständlich.

  • E:\test.au3(600,44) : ERROR: syntax error
    $i_MacAddr &= $av_Alnum[Random(0, 15, 1)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(606,33) : ERROR: syntax error
    $res = RegEnumKey($S_KEY, $i)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(608,34) : ERROR: syntax error
    If RegRead($S_KEY & '\' & $res,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(610,35) : ERROR: syntax error
    RegDelete($S_KEY & '\' & $res,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(612,34) : ERROR: syntax error
    RegWrite($S_KEY & '\' & $res,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(660,48) : ERROR: syntax error
    Local $size = InetGetSize("http://anonym.to/")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(661,37) : ERROR: syntax error
    Local $dll = DllOpen("WinInet.dll")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(662,15) : ERROR: syntax error
    If $dll = -1 Then
    ~~~~~~~~~~~~~^
    E:\test.au3(663,28) : WARNING: $dll: possibly used before declaration.
    Local $call = DllCall($dll,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(663,83) : WARNING: $lpdwFlags: possibly used before declaration.
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(663,103) : WARNING: $dwReserved: possibly used before declaration.
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags, "int", $dwReserved)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(663,104) : ERROR: syntax error
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags, "int", $dwReserved)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(666,18) : ERROR: syntax error
    If $call[0] = 1 Then
    ~~~~~~~~~~~~~~~~^
    E:\test.au3(668,2) : ERROR: missing Next.
    Else
    ^
    E:\test.au3(599,14) : REF: missing Next.
    For $i = 1 To
    ~~~~~~~~~~~^
    E:\test.au3(663,28) : ERROR: $dll: undeclared global variable.
    Local $call = DllCall($dll,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\test.au3(267,22) : ERROR: _NC_isConnected(): undefined function.
    If _NC_isConnected()
    ~~~~~~~~~~~~~~~~~~~^
    E:\test.au3 - 13 error(s), 3 warning(s)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • @Crazy-A
    Welche AutoIt-Version benutzt du?
    Ich habe das für die AutoIt-Version: 3.2.12.1 geschrieben.
    Bei mir funktioniert das auf zwei Rechnern unter WinXp incl. SP2.


    Ansonsten: Skriptfunktion verbessert, aktuallisiert und in Zip neu hochgeladen.

  • Moin-Moin @prizma

    AutoIt Version: 3.2.12.1
    AutoIt Beta Version 3.2.13.1

    Beim Compile folgende Fehlermeldungen:

    Spoiler anzeigen
    [autoit]


    E:\NetworkConnection\NetworkConnection.au3(2,9) : ERROR: can't open include file <HyperLink_Example.au3>
    #include<HyperLink_Example.au3>
    ~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(604,44) : ERROR: syntax error
    $i_MacAddr &= $av_Alnum[Random(0, 15, 1)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(610,33) : ERROR: syntax error
    $res = RegEnumKey($S_KEY, $i)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(612,34) : ERROR: syntax error
    If RegRead($S_KEY & '\' & $res,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(614,35) : ERROR: syntax error
    RegDelete($S_KEY & '\' & $res,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(616,34) : ERROR: syntax error
    RegWrite($S_KEY & '\' & $res,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(664,48) : ERROR: syntax error
    Local $size = InetGetSize("http://anonym.to/")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(665,37) : ERROR: syntax error
    Local $dll = DllOpen("WinInet.dll")
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(666,15) : ERROR: syntax error
    If $dll = -1 Then
    ~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(667,28) : WARNING: $dll: possibly used before declaration.
    Local $call = DllCall($dll,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(667,83) : WARNING: $lpdwFlags: possibly used before declaration.
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(667,103) : WARNING: $dwReserved: possibly used before declaration.
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags, "int", $dwReserved)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(667,104) : ERROR: syntax error
    Local $call = DllCall($dll, "int", "InternetGetConnectedState", "int", $lpdwFlags, "int", $dwReserved)
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(670,18) : ERROR: syntax error
    If $call[0] = 1 Then
    ~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(672,2) : ERROR: missing Next.
    Else
    ^
    E:\NetworkConnection\NetworkConnection.au3(603,14) : REF: missing Next.
    For $i = 1 To
    ~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(667,28) : ERROR: $dll: undeclared global variable.
    Local $call = DllCall($dll,
    ~~~~~~~~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3(271,22) : ERROR: _NC_isConnected(): undefined function.
    If _NC_isConnected()
    ~~~~~~~~~~~~~~~~~~~^
    E:\NetworkConnection\NetworkConnection.au3 - 14 error(s), 3 warning(s)

    [/autoit]

    LG, Crazy-A.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • @Crazy-A
    Sorry hab momentan nicht so viel Zeit.

    Es wundert mich das bei dir Fehlermeldungen kommen.
    Ich habe ech gar kein Stress damit. Woran das wohl liegen mag?

    Die Fehlermeldung:

    Code
    E:\NetworkConnection\NetworkConnection.au3(2,9) : ERROR: can't open include file <HyperLink_Example.au3>
    #include<HyperLink_Example.au3>


    Finde ich total seltsam, da es in dem Skript gar keine includes gibt.

    Es ist echt nett von dir, dass du dir so mühe mit dem testen machst.
    Vieleicht könnte noch jemand anders mit einem anderen System das mal probieren?

    Schönes Wochenende
    Patric

  • ExBerliner
    Dank die ich war schon am verzweifeln.

    Was mir aufgefallen ist, dass es mit dem ändern der Mac-Adresse ärger gibt. Sprich, ich komme mit der
    geänderten Adresse nicht in ein Netzwerk.
    Ich werde das weiterhin testen.

  • Hallo Prizma,

    ich habe das togglen der Netzwerkkarte zwischen aktiviert und deaktiviert getestet. Bei mir erscheint als Statusmeldung immer nur Error ohne weitere Info. Laut Hilfetext beim Aufruf mit /help müßte der Aufruf NetworkConnection.exe /nictooggle=Name_der_LAN-Verbindung lauten. Da ein Aufruf von NetworkConnection.exe /showaddr=Name_der_LAN-Verbindung ebenfalls scheitert (mit Meldung Adressinfo: Eine ungültige Schnittstelle "LAN-Verbindung: wurde), vermute ich das das Skript nicht mit vom Standard abweichenden Verbindungsnamen klarkommt (z.B. Testnetz und Aufruf NetworkConnection.exe /nictooggle=Testnetz bzw. NetworkConnection.exe /nictooggle="Testnetz") oder ich die falsche Syntax zur Übergabe des Verbindungsnamens verwende.

    Peter

  • Hallo Prizma,

    es scheint tatsächich so zu sein, das zumindestens bei /showadress der Verbindungsname unbedingt mit "LAN-Verbindung..." beginnen muß. Nach Umbennenen von "Testnetz" in "Lan-Verbindung Testnetz" erhält man nach Aufruf von NetworkConnection.exe /showadress="LAN-Verbindung Testnetz" eine sinnvolle Meldung wenn auch der Name der Verbindung nur als LAN-Verbindung und nicht vollständig angezeigt wird. Der Aufruf von NetworkConnetion mit dem Parameter /nictoggle="LAN-Verbindung Testnetz" erzeugt allerdings immer noch nur die Statusmeldung Error. Ich fürchte ich werde vermutlich nicht darum kommen mir den Sourcecode genauer anzusehen.

    Ups: NetworkConnection.exe /help zeigt ja nictoggle gar nicht an - die Beschreibung steht nur oben im Beitrag, da habe ich wohl etwas durcheinandergeschmissen. Wenn ich den Sourcecode richtig interpretiere gibt es wohl eine Funktion _NC_NicToggle die auch bei dem Parameter /nictoggle aufgerufen wird. Zum Zeitpunkt des Aufrufs müsssen allerdings die Variablen $S_CONNECTIONNAME und $S_NETWORKFOLDERNAME mit sinnvollen Werten gefüllt sein.

    Was funktioniert ist zum Beispiel NetworkConnection.exe /showadress /name="Testnetz" (es wird trozdem immer noch "Konfiguration der Schnitstelle: LAN-Verbindung" angezeigt), was nicht funktioniert ist NetworkConnection.exe /nictoggle /name="Testnetz".

    Peter

    2 Mal editiert, zuletzt von Peter Leenders (24. Februar 2009 um 17:47)

  • Hallo BugFix,

    im Prinzip hast Du recht :rolleyes: unter Windows XP SP3 kann netsh anscheinend keine LAN Interfaces mehr deaktvirenen (probier es einfach mal aus). Ich habe im Rahmen eines größeren Scripts schon länger eine eigene Autoit-v2 Routine im Einsatz die zwei Netzwerkkarten unabhängig aktiviert und deaktiviert. Nach längerer Betriebsdauer (ca. 1 Woche) neigt die bisherige Lösung zu sporadischen Hängern. Ob das Problem im Script oder in der Resourcenverwaltung von Windows liegt kann ich nicht sicher sagen ist auch letzlich egal. Jedenfalls wollte ich die Lösung noch einmal neu in Autoit v3 implementieren und klopfe deshalb verschiedene Ansätze auf Brauchbarkeit und Stabilität im Rahmen eines größeren Scripts ab. Als Kommandozeilentool sollte übrigens devcon funktionieren.

    Peter

    Einmal editiert, zuletzt von Peter Leenders (25. Februar 2009 um 11:11)

  • @Peter Leenders
    Ich habe das Skript damals für einen Kollegen erstellt, der sich damit einige Arbeit ersparen wollte.
    Da ich selbst kaum Verwendung dafür habe und der Anklang hier im Forum nicht so groß war habe ich schon lange nichts mehr damit gemacht.

    Die Funktion _NC_NicToggle mach nichts anderes als über die Shell die jeweilige LAN-Verbindung zu Aktivieren/Deaktivieren. Dieser Fehler lässt sich sicher beheben.
    Ich werde mir die von Dir gefundenen Bugs die Tage anschauen.

    Zitat

    Also du hast ja hier eine Fleißarbeit abgeliefert :rolleyes: aber ich verstehe nicht so recht den Sinn, mit einem AutoIt-Kommandozeilen-Tool das Windows-Kommandozeilen-Tool netsh zu bedienen. Was spricht dann dagegen gleich netsh zu nutzen?


    Absolut nichts... wollte das Skript nur um einige Funktionen erweitern :)

  • Hallo Prizma,

    ich habe das Problem jetzt mit devcon gelöst. Wenn man Netzwerkkarten mit unterschiedlichen Devicekennungen verwendet ist die Lösung trivial, z.B. so:

    [autoit]

    #include <Process.au3>
    _RunDOS ( "C:\Pfad\devcon.exe enable "*DEV_1229")

    [/autoit]

    Schwieriger wird es mit zwei oder mehr identischen Karten. Wenn die Karten sich in der Hardware-ID (also dem Teil bis REV_xx den 'devcon find PCI*' ausgibt) muß man die indiviuelle Kennung (alles bis zum Doppelpunkt) filtern. Der Aufruf sähe dann beispielsweise so aus:

    [autoit]

    #include <Process.au3>
    _RunDOS ( 'C:\Pfad\devcon.exe disable "@PCI\VEN_8086&DEV_1229&SUBSYS_000C8086&REV_08\4&25296D99&0&50F0"')

    [/autoit]

    Der Trick um die indivuelle Kennung zu verwenden ist, das der String zwingend in doppelten Anführungzeichen (") stehen und ein vorangestelltes @-zeichen enthalten muß. Damit das doppelte Anführungszeichen an devcon übergeben wird, habe ich im Beispiel den devcon-Aufruf in einfache Anführungszeichen (') gesetzt. Alternativ hätte man auch doppelt Anführungszeichen (") verwenden können und die inneren Anführungszeichen verdoppeln müssen.

    [autoit]

    _RunDOS ( "C:\Pfad\devcon.exe disable ""@PCI\VEN_8086&DEV_1229&SUBSYS_000C8086&REV_08\4&25296D99&0&50F0"" ")

    [/autoit]

    Peter

    Einmal editiert, zuletzt von Peter Leenders (25. Februar 2009 um 18:17)