#include <array.au3>
;****************************************************************************************
; Funktion		_SetIP($CAPTION, $IP='0.0.0.0', $GATEWAY='0.0.0.0' [, $SUB="255.255.255.0"])
;
; Beschreibung	Konfiguration eines IPEnabled Netzwerkadapters
;				Wird nur der Parameter $CAPTION übergeben, wird für diesen Adapter 'DHCP Enabled' gesetzt
;
; Parameter		$Caption	ermitteln mit _GetNetworkAdapterIPEnabled() o.a. Skript
;				$IP			einzustellende IP
;				$GATEWAY	Standardgateway
;	optional	$SUB		Subnetzmaske (default "255.255.255.0")
;
; Rückgabe		0			IP und Gateway (oder DHCP) erfolgreich gesetzt
;				1			IP-Adresse konnte nicht gesetzt werden	@error 1
;				2			Gateway konnte nicht gesetzt werden		@error 1
;				3			IP-Adresse und Gateway konnten nicht gesetzt werden	@error 1
;				4			Aktivierung DHCP fehlgeschlagen			@error 1
;
;
; Autor			BugFix (bugfix@autoit.de)
;****************************************************************************************
Func _SetIP($CAPTION, $IP='0.0.0.0', $GATEWAY='0.0.0.0', $SUB="255.255.255.0")
Local $err = 0, $arIPAddress[1], $arSubnetMask[1], $arGateway[1], $arGatewayMetric[1]
	$strComputer = "."
	$objWMIService = ObjGet("winmgmts:" _
		& "{impersonationLevel=impersonate}!\\" & $strComputer & "\root\cimv2")
	$colNetAdapters = $objWMIService.ExecQuery _
		("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
	$arIPAddress[0] = $IP
	$arSubnetMask[0] = $SUB
	$arGateway[0] = $GATEWAY
	$arGatewayMetric[0] = 1
	For $objNetAdapter In $colNetAdapters
		If $objNetAdapter.Caption = $CAPTION Then
			If $IP <> '0.0.0.0' Then
				$errEnable = $objNetAdapter.EnableStatic($arIPAddress, $arSubnetMask)
				$errGateways = $objNetAdapter.SetGateways($arGateway, $arGatewaymetric)
				If $errEnable <> 0 Then $err += 1
				If $errGateways <> 0 Then $err += 2
			Else
				$errEnable = $objNetAdapter.EnableDHCP()
				If $errEnable <> 0 Then $err += 4
			EndIf
			ExitLoop
		EndIf
	Next
	If $err > 0 Then SetError(1)
	Return $err
EndFunc ;==>_SetIP()