Buttonfarbe ändern - Wenn PC im Netzwerk online ist grün, ansonsten rot

  • Hallo zusammen!

    ich betreue ein kleines Netzwerk und möchte sehen welche PCs online sind und welche nicht. Dazu habe ich eine GUI mit Koda erstellt auf welcher ich Buttons mit der PC-Bezeichnung habe. Über diese Buttons sollen später noch andere Funktionen aufgeführt werden.
    Nun sollen bereits beim Start des Scriptes die Buttons entsprechend des Zustandes der PCs eingefärbt werden. Ist der PC aus soll der Button rot sein. Ist der PC an entsprechend grün.

    Später soll noch ein komplettes Runterfahren der PCs und das Starten der "Überwachung" per VNC hinzukommen. Beim Klick auf die einzelnen PCs soll VNC nur für diesen PC starten

    Ich stehe noch am Anfang und bin für jede Hilfe und jeden Tipp dankbar.

    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    #Region ### START Koda GUI section ### Form=
    $Form1_1 = GUICreate("JVA Siegburg - AT-Printwork Console", 544, 388, 950, 246)
    $Btn11 = GUICtrlCreateButton("PC 11", 408, 176, 105, 41)
    $Btn12 = GUICtrlCreateButton("PC 12", 280, 176, 105, 41)
    $Btn13 = GUICtrlCreateButton("PC 13", 152, 176, 105, 41)
    $Btn14 = GUICtrlCreateButton("PC 14", 24, 176, 105, 41)
    $Btn18 = GUICtrlCreateButton("PC 18", 344, 40, 105, 41)
    $Btn15 = GUICtrlCreateButton("PC 15", 88, 88, 105, 41)
    $Btn16 = GUICtrlCreateButton("PC 16", 216, 88, 105, 41)
    $Btn17 = GUICtrlCreateButton("PC 17", 344, 88, 105, 41)
    $Btn19 = GUICtrlCreateButton("PC 19", 216, 40, 105, 41)
    $Btn20 = GUICtrlCreateButton("PC 20", 88, 40, 105, 41)
    $allOff = GUICtrlCreateButton("Alle PCs runterfahren", 24, 232, 233, 41)
    $allOn = GUICtrlCreateButton("Komplettstart", 280, 232, 233, 41)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit][autoit][/autoit][autoit]

    ;Variablen für PCs vergeben, anpingen und dadurch erkennen, ob sie online sind
    Local $11 = Ping("192.168.0.11", 250)
    Local $12 = Ping("192.168.0.12", 250)
    Local $13 = Ping("192.168.0.13", 250)
    Local $14 = Ping("192.168.0.14", 250)
    Local $15 = Ping("192.168.0.15", 250)
    Local $16 = Ping("192.168.0.16", 250)
    Local $16 = Ping("192.168.0.17", 250)
    Local $16 = Ping("192.168.0.18", 250)
    Local $16 = Ping("192.168.0.19", 250)
    Local $16 = Ping("192.168.0.20", 250)

    [/autoit][autoit][/autoit][autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit][autoit][/autoit][autoit]

    ;PC11 wird betätigt
    Case $Btn11
    If $11 Then ;wenn PC online, dann......
    MsgBox(0, "Printwork", "weiteres Script zum Starten von VNC einfügen..... Ping ist:" & $11)
    Else
    MsgBox(0, "Printwork", "Der PC 11 ist offline.")
    EndIf

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;PC12 wird betätigt
    Case $Btn12

    [/autoit][autoit][/autoit][autoit]

    ;PC13 wird betätigt
    Case $Btn13

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Case $Btn14
    Case $Btn18
    Case $Btn15
    Case $Btn16
    Case $Btn17
    Case $Btn19
    Case $Btn20
    Case $allOff
    Case $allOn

    [/autoit][autoit][/autoit][autoit]

    EndSwitch
    WEnd

    [/autoit]
  • Legatos

    folgend mal ein Ausschnitt für farbige Buttons!

    [autoit]


    $Form1 = GUICreate(test", 246, 161, 359, 376)
    GUISetBkColor(0xC0C0B2)
    $Button1 = GUICtrlCreateButton("Grün", 32, 16, 73, 25)
    GUICtrlSetBkColor($Button1,0x66CC00)
    $Button2 = GUICtrlCreateButton("Rot", 144, 16, 73, 25)
    GUICtrlSetBkColor($Button2,0xff4D00)

    [/autoit]


    Gruß gmmg

  • Hallo Legatos,

    Ich habe mal eine Funktion geschrieben die anzeigt ob die Computer Online oder Offline sind.
    Mit dem Runterfahren etc. habe ich keine Ahnung :D

    Ich hoffe ich konnte dir weiterhelfen.

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Local $Btn[21]
    $Form1_1 = GUICreate("JVA Siegburg - AT-Printwork Console", 544, 388, 950, 246)
    $Btn[11] = GUICtrlCreateButton("PC 11", 408, 176, 105, 41)
    $Btn[12] = GUICtrlCreateButton("PC 12", 280, 176, 105, 41)
    $Btn[13] = GUICtrlCreateButton("PC 13", 152, 176, 105, 41)
    $Btn[14] = GUICtrlCreateButton("PC 14", 24, 176, 105, 41)
    $Btn[15] = GUICtrlCreateButton("PC 18", 344, 40, 105, 41)
    $Btn[16] = GUICtrlCreateButton("PC 15", 88, 88, 105, 41)
    $Btn[17] = GUICtrlCreateButton("PC 16", 216, 88, 105, 41)
    $Btn[18] = GUICtrlCreateButton("PC 17", 344, 88, 105, 41)
    $Btn[19] = GUICtrlCreateButton("PC 19", 216, 40, 105, 41)
    $Btn[20] = GUICtrlCreateButton("PC 20", 88, 40, 105, 41)
    $allOff = GUICtrlCreateButton("Alle PCs runterfahren", 24, 232, 233, 41)
    $allOn = GUICtrlCreateButton("Komplettstart", 280, 232, 233, 41)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    AdlibRegister("_IsOnline",6000)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

    [/autoit] [autoit][/autoit] [autoit]

    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Func _IsOnline()
    For $i = 11 To 20
    $Adress = "192.168.0."&$i
    If Ping($Adress,250) = 1 Or 2 Or 3 Or 4 Then
    GUICtrlSetBkColor($Btn[$i],0xFF0000)
    Else
    GUICtrlSetBkColor($Btn[$i],0x00FF00)
    EndIf
    Next
    EndFunc

    [/autoit]

    Lg F4R

    Ein Spoiler im Spoiler im Spoiler...

    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen

    Die geheime Nachricht ist "Baum" !

  • Sollte die Funktion nicht eher so aussehen:

    [autoit]

    Func _IsOnline()
    For $i = 11 To 20
    $Adress = "192.168.0."&$i
    Ping($Adress,250)
    If @error Then
    GUICtrlSetBkColor($Btn[$i],0xFF0000)
    Else
    GUICtrlSetBkColor($Btn[$i],0x00FF00)
    EndIf
    Next
    EndFunc

    [/autoit]
    UNPLEASANT SPOILER

    You just lost the game!

  • Hiho,

    ja mit so etwas habe ich mich auch mal rumgeschlagen :)

    Das interne Ping hatte leider bei mir immer wieder seltsame Auswüchse wobei ich dann auf das externe fping umstieg (um Welten schneller).
    Dieses habe ich Binär im Script abgelegt und bei Bedarf wird es aufgerufen. So habe ich auf "Knopfdruck" knapp 250 Rechner in 5 Sekunden ausgelesen was deren Status angeht.
    Das "normale" Ping hat oft bei offline-Rechner trotz gesetztem Timeout manchmal einige Sekunden gedauert.

    Die ganzen Rechner habe ich in einer Listview untergebracht mit separatem Kontexmenu:

    Demenstprechend für das Herunterfahren/Neustarten per command einfach Bordmittel genutzt:

    RunWait(@ComSpec & " /C" & 'shutdown /r /m \\' & $RDPString & ' /t 15 /c "Der PC wird neu gestartet."', @TempDir, @SW_HIDE)
    RunWait(@ComSpec & " /C" & 'shutdown /s /m \\' & $RDPString & ' /t 15 /c "Der PC wird heruntergefahren."', @TempDir, @SW_HIDE)

  • shadow667 stimmt du hast recht,
    in meinem Fall überprüfe ich nur den Aktuellen Ping zum Computer...
    mein Fehler. Ich muss natürlich @error auslesen :rolleyes:

    Danke für den Hinweis

    Legatos ich kenne noch eine Software die du alternativ verwenden könntest: "Netscan"
    Das Programm ist kostenlos kann man bei chip runterladen wenn es mich nicht täuscht.
    Enthält leider Werbung aber tut seinen Job

    Ein Spoiler im Spoiler im Spoiler...

    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen
    Spoiler anzeigen

    Die geheime Nachricht ist "Baum" !

  • Danke schon mal für die Antworten. Ich bin erst morgen wieder beim Dienst um die Tipps umzusetzen. Ich melde mich hier bestimmt wieder. ;)

    Torni: Wäre es vielleicht möglich mir das Script zukommen zu lassen? es sind bei mir zwar nur 10 Rechner, würde aber meine Arbeit viel einfacher gestalten.

    Grüße
    Matthias