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
#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
Files: autoit.de/wcf/attachment/2795/(16,38 kB)