mein erstes Autoit Script, seid also nicht so streng mit mir
damit kann man einen Bereich scannen.
Entweder Ip manuell eingeben, oder per Dropdown Adapter auswählen.
C
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\MyAutoIt3_Green.ico
#AutoIt3Wrapper_Res_Language=1031
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
;----------------------------------------------------------------------------------------------------
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GuiListView.au3>
#include <GuiIPAddress.au3>
#include <GuiStatusBar.au3>
#include <ProgressConstants.au3>
#include <ComboConstants.au3>
;----------------------------------------------------------------------------------------------------
$Fenstertitel = "made by www.Ib-RuP.de"
$default_bis = 255
;----------------------------------------------------------------------------------------------------
Local $setIParray[4] = [0,0,0,0]
Local $aParts[2] = [100, -1]
Local $sComboRead = ""
;GUI zusammenbasteln
$GUI = GUICreate($Fenstertitel, 260, 800)
$Combo1 = GUICtrlCreateCombo("", 60, 5, 200, 25, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
; Fenster 1. Zeile
GUICtrlCreateLabel("Ping-von:", 5, 35, 50, 20)
$IPAddress1 = _GUICtrlIpAddress_Create($GUI, 60, 35, 150, 20)
_GUICtrlIpAddress_SetArray($IPAddress1, $setIParray)
; Fenster 2. Zeile
GUICtrlCreateLabel("Ping-bis", 5, 60, 50, 20)
$IP_input_bis = GUICtrlCreateInput($default_bis, 180, 60, 25, 20, BitOR($ES_CENTER, $ES_NUMBER))
; Fenster 3. Zeile
GUICtrlCreateLabel("Timeout:", 5, 85, 50, 20)
$input_Timeout = GUICtrlCreateInput("1000", 60, 85, 30, 20, BitOR($ES_CENTER, $ES_NUMBER))
; Fenster Button
$Hidden_Text = GUICtrlCreateLabel("Scan läuft. Bitte Warten", 5, 110, 250, 40, $ES_CENTER)
GUICtrlSetState($Hidden_Text, $GUI_HIDE)
$Button_start = GUICtrlCreateButton("Start Ping", 5, 110, 250, 40)
; Fenster ListView
$ListView = GUICtrlCreateListView("Adresse|Antwortzeit [MSec.]", 5, 155, 250, 620)
$ListView_Handle = GUICtrlGetHandle($ListView)
_GUICtrlListView_SetColumnWidth($ListView_Handle, 0, 100)
_GUICtrlListView_SetColumnWidth($ListView_Handle, 1, 100)
$ListView_Handle = GUICtrlGetHandle($ListView)
;Statusbar
$StatusBar = _GUICtrlStatusBar_Create($GUI, $aParts)
$progressbar = GUICtrlCreateProgress(0, 0, -1, -1, $PBS_SMOOTH)
_GUICtrlStatusBar_EmbedControl($StatusBar, 1, GUICtrlGetHandle($progressbar))
GUISetState(@SW_SHOW, $GUI)
;##########
;Netzwerkadapter auslesen und Combo Box zusammenbasteln
$tagIP_ADDRESS_STRING = "char String[16];"
$tagIP_MASK_STRING = $tagIP_ADDRESS_STRING
$tagIP_ADDR_STRING = "ptr Next;" & $tagIP_ADDRESS_STRING & $tagIP_MASK_STRING & "DWORD Context;"
$tagIP_ADAPTER_INFO = "long_ptr Next; DWORD ComboIndex; char AdapterName[260];char Description[132]; UINT AddressLength; BYTE Address[8]; dword Index; UINT Type;" & _
" UINT DhcpEnabled; ptr CurrentIpAddress; ptr NextIpAddressList; char IpAddressListADDRESS[16]; char IpAddressListMASK[16]; DWORD IpAddressListContext; " & _
"ptr GatewayListList; char GatewayListADDRESS[16]; char GatewayListMASK[16]; DWORD GatewayListContext; " & _
"ptr DhcpServerList; char DhcpServerADDRESS[16]; char DhcpServerMASK[16]; DWORD DhcpServerContext; " & _
"int HaveWins; " & _
"ptr PrimaryWinsServerList; char PrimaryWinsServerADDRESS[16]; char PrimaryWinsServerMASK[16]; DWORD PrimaryWinsServerContext; " & _
"ptr SecondaryWinsServerList; char SecondaryWinsServerADDRESS[16]; char SecondaryWinsServerMASK[16]; DWORD SecondaryWinsServerContext; " & _
"DWORD LeaseObtained; DWORD LeaseExpires;"
$dll = DllOpen("Iphlpapi.dll")
$ret = DllCall($dll, "dword", "GetAdaptersInfo", "ptr", 0, "dword*", 0)
$adapterBuffer = DllStructCreate("byte[" & $ret[2] & "]")
$adapterBuffer_pointer = DllStructGetPtr($adapterBuffer)
$return = DllCall($dll, "dword", "GetAdaptersInfo", "ptr", $adapterBuffer_pointer, "dword*", $ret[2])
$adapter = DllStructCreate($tagIP_ADAPTER_INFO, $adapterBuffer_pointer)
$combo_string = ""
Do
If _Get($adapter, "IpAddressListADDRESS") = "0.0.0.0" Then
;do nothing
Else
$combo_string = $combo_string & "|" & _Get($adapter, "IpAddressListADDRESS")
ConsoleWrite("Description: " & _Get($adapter, "Description") & @CRLF)
ConsoleWrite("IpAddressListADDRESS: " & _Get($adapter, "IpAddressListADDRESS") & @CRLF)
ConsoleWrite("-------------------------------------" & @CRLF)
EndIf
$ptr = DllStructGetData($adapter, "Next")
$adapter = DllStructCreate($tagIP_ADAPTER_INFO, $ptr)
Until @error
GUICtrlSetData($Combo1, $combo_string)
$adapterBuffer = ""
$adapterBuffer_pointer = ""
DllClose($dll)
Func _Get(ByRef $adapter, $ID)
Return DllStructGetData($adapter, $ID)
EndFunc ;==>_Get
;ENDE Netzwerkadapter auslesen und Combo Box zusammenbasteln
;#######
;----------------------------------------------------------------------------------------------------
Global $IPSearching = False, $IPStart, $IPEnd, $IPInsgesamt, $IPFertig, $IPOnline, $IPPercent, $IPPercentPart
While True
Switch GUIGetMsg()
Case $Combo1
$sComboRead = GUICtrlRead($Combo1)
$IP_value = StringSplit($sComboRead, ".")
Local $setIParray_1[4] = [$IP_value[1], $IP_value[2], $IP_value[3], 1]
_GUICtrlIpAddress_SetArray($IPAddress1, $setIParray_1)
Case $Button_start
_searchIps()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
If $IPSearching Then
_pingIPs()
EndIf
WEnd
;error: 1 -> Ein Feld ist leer
; 2 -> Wert darf nur zwischen 1 und 255 liegen
; 3 -> Start größer als Ende
Func _searchIps()
$IPStart = _GUICtrlIpAddress_GetArray($IPAddress1)
$IPEnd = GUICtrlRead($IP_input_bis)
;#####Fehlerbehandlung ####################
;alle Felder voll?
If ($IPEnd = "" Or GUICtrlRead($input_Timeout) = "") Then
SetError(1)
;IP zwischen 1-255?
ElseIf ($IPStart[0] < 0 Or $IPStart[0] > 255 Or $IPStart[1] < 0 Or $IPStart[1] > 255 Or $IPStart[2] < 0 Or $IPStart[2] > 255 Or $IPStart[3] < 1 Or $IPStart[3] > 255 Or $IPEnd < 1 Or $IPEnd > 255) Then
SetError(2)
;Ende ist größer Anfang?
ElseIf ($IPStart[3] > $IPEnd) Then
SetError(3)
EndIf
;#####Ende Fehlerbehandlung ################
If @error Then
Switch @error
Case 1
MsgBox(0 + 16 + 0 + 0 + 262144, "Fehler", "bis oder Timeout keinen Wert eingetragen!")
Case 2
MsgBox(0 + 16 + 0 + 0 + 262144, "Fehler", "xxx.xxx.xxx.ZZZ" & @crlf & "xxx nur von 0-255 " & @crlf & "ZZZ nur von 1-255 " )
Case 3
MsgBox(0 + 16 + 0 + 0 + 262144, "Fehler", "bis muß größer als von sein")
EndSwitch
Else
;Button ausblenden
GUICtrlSetState($Button_start, $GUI_HIDE)
;Text einblenden
GUICtrlSetState($Hidden_Text, $GUI_SHOW)
;ListView leeren
_GUICtrlListView_DeleteAllItems($ListView_Handle)
;INITS
$IPInsgesamt = $IPEnd - $IPStart[3]
$IPFertig = 0
$IPOnline = 0
$IPPercentPart = 100 / $IPInsgesamt
$IPSearching = True
EndIf
EndFunc ;==>_searchIps
Func _pingIPs()
If $IPStart[3] > $IPEnd Then
$IPSearching = False
;#### alles fertig
Beep(1000, 500)
;Text ausblenden
GUICtrlSetState($Hidden_Text, $GUI_HIDE)
;Button wieder einblenden
GUICtrlSetState($Button_start, $GUI_SHOW)
;Progressbar zurücksetzen
GUICtrlSetData($progressbar, 0)
;Anzahl der gefundenen Teilnehmer ausgeben
_GUICtrlStatusBar_SetText($StatusBar, $IPOnline & " Online")
ConsoleWrite("-------------------------------------" & @CRLF)
ConsoleWrite($IPOnline & " Online" & @CRLF)
ConsoleWrite("-------------------------------------" & @CRLF)
ConsoleWrite("-------------------------------------" & @CRLF)
Else
$Ping_IP = Ping($IPStart[0] & "." & $IPStart[1] & "." & $IPStart[2] & "." & $IPStart[3], $input_Timeout)
;in Listview eintragen
If @error = 0 Then
GUICtrlCreateListViewItem($IPStart[0] & "." & $IPStart[1] & "." & $IPStart[2] & "." & $IPStart[3] & "|" & $Ping_IP, $ListView)
ConsoleWrite($IPStart[0] & "." & $IPStart[1] & "." & $IPStart[2] & "." & $IPStart[3] & @CRLF)
$IPOnline += 1
Beep(1000, 100)
EndIf
_GUICtrlStatusBar_SetText($StatusBar, $IPFertig & " von " & $IPInsgesamt & " fertig")
;Prozentanzeige aktualisieren
If $IPPercent <> Int($IPFertig * $IPPercentPart) Then
$IPPercent = Int($IPFertig * $IPPercentPart)
GUICtrlSetData($progressbar, $IPPercent)
EndIf
$IPStart[3] += 1
$IPFertig += 1
EndIf
EndFunc ;==>_pingIPs
Alles anzeigen