Hallo Gemeinde,
ich hätte da gerne mal ne Hilfestellung bitte:
ich bin gerade dabei mir ein Script zu basteln, welches beim ausführen zwei Mögliche Optionen zur Auswahl gibt...
1. Option: per Ping einen bestimmten Host "anpingen". Bei Antwort (oder eben keiner Antwort) auf den Ping soll in der GUI der Host mit einer art "Ampel" (rot od. grün) anzeigt werden.
2. Option hier liegt mein aktuelles "Problem": Auswahl über eine GUI mit Hilfe von Checkboxen... Wir die 1. Checkbox angehakt, werden zwei weitere Checkboxen per $GUI_SHOW angezeigt, deren Sinn darin besteht entweder eins, oder halt beide Netze zu scannen.
Bei einem Klick auf einen Startknopf soll dann die Ping-Prozedur durchlaufen werden und alle Hosts in der GUI angezeigt werden mit je roter oder grüner Ampel.
Meine Frage wäre jetzt aktuell...
ich prüfe das Inputfeld für die IP-Adresse... ist die Eingabe größer als 10 Zeichen, so sollen die Checkboxen (samt Text) verschwinden... klappt soweit auch prima, ABER da ich einen fetten Fehler in der Switchanweisung habe (und ehrlich gesagt nicht weiß, wie ich das Problem gelöst kriege) nimmt das Script keine Befehle entgegen, da es wieder die Länge abfragt... (man gibt ne IP ein, alles wunderbar, klickt dann auf "Neue Adresse" und versucht dann zu beenden, fehlanzeige... gibt man dann in die Inputbox wieder etwas größer 10 Zeichen ein, beendet sich das Script...
Anbei Script meiner GUI mit der Problematik zum vorherigen Absatz.
Bitte nicht wundern, die Ampelfunktion ist noch nicht eingebaut... ich arbeite gerne Schritt für Schritt... zumal mich das aufbauen einer Range (IPs von 1-254) noch nerven kosten wird (hier müssen ja die Labels und ampeln quasi dynamisch erstellt werden, da komme ich sicherlich im weiteren Verlauf nochmal auf euch zu, wenn ich darf)
und ja ich weiß, es gab bereits ein ähnliches Thema
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
HotKeySet("{ESC}", "beenden")
Dim $checkbox1, $checkbox2, $checkbox3, $lab_control_checkbox2, $lab_control_checkbox3, $schrift = "Arial Narrow", $var
$Form1 = GUICreate("Form1", 1000, 666, 184, 115)
$Label1 = GUICtrlCreateLabel("Aktive Clients im Netzwerk", 24, 8, 354, 44)
GUICtrlSetFont($Label1, 25, 800, 0, $schrift)
;~ GUICtrlCreateIcon(@SCRIPTDIR & "\green.ico", "Grüner Punkt", 50, 190, 20, 20)
;~ GUICtrlCreateIcon(@SCRIPTDIR & "\red.ico", "Roter Punkt", 50, 220, 20, 20)
;~ Checkbox 1 Auswahl komplette Range scannen
$checkbox1 = GUICtrlCreateCheckbox("", 24, 87, 25, 25)
$lab_control_checkbox1 = GUICtrlCreateLabel("Komplette Range Scannen", 100, 87, 164, 24)
GUICtrlSetFont($lab_control_checkbox1, 12, 400, 0, $schrift)
;~ Checkbox 2+3 Auswahl wird erst frei wenn checkbox 1 ausgewählt
$checkbox2 = GUICtrlCreateCheckbox("", 24, 127, 25, 25)
GUICtrlSetState($checkbox2, $GUI_HIDE)
$checkbox3 = GUICtrlCreateCheckbox("", 24, 159, 25, 25)
GUICtrlSetState($checkbox3, $GUI_HIDE)
$lab_control_checkbox2 = GUICtrlCreateLabel("0er Netz", 50, 129, 61, 24)
GUICtrlSetFont($lab_control_checkbox2, 12, 400, 0, $schrift)
GUICtrlSetState($lab_control_checkbox2, $GUI_HIDE)
$lab_control_checkbox3 = GUICtrlCreateLabel("1er Netz", 50, 160, 61, 24)
GUICtrlSetFont($lab_control_checkbox3, 12, 400, 0, $schrift)
GUICtrlSetState($lab_control_checkbox3, $GUI_HIDE)
;~ Hier nur eine IP-Adresse prüfen
$lab_control_IP_Adresse = GUICtrlCreateLabel("EINE IP checken", 170, 50, 105, 24)
GUICtrlSetFont($lab_control_IP_Adresse, 12, 400, 0, $schrift)
$inp_IP_Adresse = GUICtrlCreateInput("192.168.0.", 24, 48, 129, 24)
GUICtrlSetFont($inp_IP_Adresse, 12, 400, 0, $schrift)
GUISetState(@SW_SHOW)
;~ Startbutton für prozeduren
$start_button = GUICtrlCreateButton("Start", 24, 190, 50, 24)
GUICtrlSetFont($start_button, 12, 400, 0, $schrift)
;~ exitbutton
$exit_button = GUICtrlCreateButton("Programm beenden", 24, 220, 150, 24)
GUICtrlSetFont($exit_button, 12, 400, 0, $schrift)
;~ clearbutton
$clear_button = GUICtrlCreateButton("Neue Adresse", 280, 50, 150, 24)
GUICtrlSetFont($clear_button, 12, 400, 0, $schrift)
;~ ConsoleWrite(StringLen(GUICtrlRead($inp_IP_Adresse)))
Func checkbox_on_off()
If GuiCtrlRead($checkbox1) = 1 Then
GUICtrlSetState($checkbox2, $GUI_SHOW)
GUICtrlSetState($checkbox3, $GUI_SHOW)
GuiCtrlSetState($lab_control_checkbox2, $GUI_SHOW)
GuiCtrlSetState($lab_control_checkbox3, $GUI_SHOW)
GUICtrlSetState($lab_control_IP_Adresse, $GUI_HIDE)
GUICtrlSetState($inp_IP_Adresse, $GUI_HIDE)
GUICtrlSetState($clear_button, $GUI_HIDE)
Else
GUICtrlSetState($checkbox2, $GUI_HIDE)
GUICtrlSetState($checkbox2, $GUI_UNCHECKED)
GUICtrlSetState($checkbox3, $GUI_HIDE)
GUICtrlSetState($checkbox3, $GUI_UNCHECKED)
GuiCtrlSetState($lab_control_checkbox2, $GUI_HIDE)
GuiCtrlSetState($lab_control_checkbox3, $GUI_HIDE)
GUICtrlSetState($lab_control_IP_Adresse, $GUI_SHOW)
GUICtrlSetState($inp_IP_Adresse, $GUI_SHOW)
GUICtrlSetState($clear_button, $GUI_SHOW)
EndIf
Sleep(400)
EndFunc
;~ GUI-Schleife
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE, $exit_button
Exit
Case $start_button
pingabfrage()
case $clear_button
GUICtrlSetData($inp_IP_Adresse, "192.168.0.")
Case $nMsg
$long_inp_IP_Adresse = (StringLen(GuiCtrlRead($inp_IP_Adresse)))
If $long_inp_IP_Adresse > 10 Then
GUICtrlSetState($checkbox1, $GUI_HIDE)
GUICtrlSetState($lab_control_checkbox1, $GUI_HIDE)
Else
GUICtrlSetState($checkbox1, $GUI_SHOW)
GUICtrlSetState($lab_control_checkbox1, $GUI_SHOW)
checkbox_on_off()
EndIf
EndSwitch
WEnd
Func pingabfrage()
$ip_adresse_abfrage = Ping(GuiCtrlRead($inp_IP_Adresse),250)
If $ip_adresse_abfrage Then
MsgBox($MB_SYSTEMMODAL, "", "Host " & GuiCtrlRead($inp_IP_Adresse) & " ist online! Die Antwortzeit beträgt: " & $ip_adresse_abfrage & "ms.")
Else
EndIf
EndFunc
Func beenden()
Exit
EndFunc
Alles anzeigen
Solange keine beschimpfungen kommen, bin ich für jede Kritik offen...