Script für die Schule

  • Hallo... unser Admin meinte, ich sollte dochmal wenn Ich lust hätte versuchen etwas für die Schule zu programmieren. *und ob ich lust habe* :D
    Nun bin Ich ncoh nicht ganz fertig... habe bis jetzt das Grafische von dem Lehrerprog. Habt ihr irgendwelche verbesserungsvorschläge? *Außer, das man das Script um die hälfte kürzer machen könnte* Oder habt ihr Ideen und Anregungen?
    Für Alle Mutigen, die sich tatsächlich durch das Script quälen wollen: :rolleyes:

    Spoiler anzeigen
    [autoit]


    ;~ Includes
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3> ;<- Für Combolist
    #include <ComboConstants.au3> ;<- Für Combolist
    #include <inet.au3> ;<- zum prüfen ob PChostname die endung le hat
    #include <Misc.au3> ;<- zum prüfen, ob Programm bereits läüft
    ;testen, ob Programm bereits läuft.Wenn ja: Hinweis darauf und beenden
    If _Singleton("Skript", 1) = 0 Then
    MsgBox(64, "MasterControl", "MasterControl läuft bereits", 5)
    Exit
    EndIf
    ; teste, ob Programm auf Lehrer PC ausgeführt wird. Wenn nicht: Meldung + Beenden
    TCPStartup()
    $hostname = _TCPIpToName(@IPAddress1)
    $hostnametest = StringSplit($hostname, "-")

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

    If $hostnametest[0] = 3 Then ;wenn im hostname 3 - vorhanden sind dann

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

    If $hostnametest[3] <> "le" Then
    MsgBox(64, "MasterControl", "Dieses Programm darf nur auf Lehrerrechnern ausgeführt werden")
    Exit
    EndIf
    If $hostnametest[3] <> "LE" Then
    MsgBox(64, "MasterControl", "Dieses Programm darf nur auf Lehrerrechnern ausgeführt werden")
    Exit
    EndIf
    Else ; wenn im hostname keine 2 - vorhanden sind
    MsgBox(64, "MasterControl", "Dieses Programm sollte auf einem Lehrerrechner der Schule ausgeführt werden")
    EndIf

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

    TCPShutdown()

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

    ;~ Hier startet der GUI-Code
    $Gui = GUICreate("MasterControl 1.0 BETA", 350, 320); <-- Erstelle die GUI
    GUICtrlCreateLabel("Auswahl der PCs", 10, 20)
    ; checkboxen zum PCs auswählen
    $pc1 = GUICtrlCreateCheckbox("1", 10, 50)
    $pc2 = GUICtrlCreateCheckbox("2", 10, 70)
    $pc3 = GUICtrlCreateCheckbox("3", 10, 90)
    $pc4 = GUICtrlCreateCheckbox("4", 10, 110)
    $pc5 = GUICtrlCreateCheckbox("5", 10, 130)
    $pc6 = GUICtrlCreateCheckbox("6", 10, 150)
    $pc7 = GUICtrlCreateCheckbox("7", 10, 170)
    $pc8 = GUICtrlCreateCheckbox("8", 10, 190)
    $pc9 = GUICtrlCreateCheckbox("9", 10, 210)
    $pc10 = GUICtrlCreateCheckbox("10", 10, 230)
    $pc11 = GUICtrlCreateCheckbox("11", 50, 50)
    $pc12 = GUICtrlCreateCheckbox("12", 50, 70)
    $pc13 = GUICtrlCreateCheckbox("13", 50, 90)
    $pc14 = GUICtrlCreateCheckbox("14", 50, 110)
    $pc15 = GUICtrlCreateCheckbox("15", 50, 130)
    $pc16 = GUICtrlCreateCheckbox("16", 50, 150)
    $pc17 = GUICtrlCreateCheckbox("17", 50, 170)
    $pc18 = GUICtrlCreateCheckbox("18", 50, 190)
    $pc19 = GUICtrlCreateCheckbox("19", 50, 210)
    $pc20 = GUICtrlCreateCheckbox("20", 50, 230)
    GUISetState(@SW_SHOW)

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

    ;copyright
    GUICtrlCreateLabel("© Copyright Jonathan", 110, 295)

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

    ;Icon setzten
    If FileExists(@ScriptDir & "\icon.ico") Then
    GUISetIcon(@ScriptDir & "\icon.ico")
    Else
    MsgBox(48, "Icon fehlt", "Das Icon wurde nicht gefunden. Das Programm wird ohne das Icon weiter ausgeführt!")
    EndIf

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

    ;trennlinie
    GUICtrlCreatePic("linie.jpg", 100, 5, 2, 310)
    $Buttonuebernehmen = GUICtrlCreateButton("Übernehmen", 5, 295, 90, 25, $WS_GROUP)
    $Buttonalle = GUICtrlCreateButton("alle", 55, 265, 40, 25, $WS_GROUP)
    $buttonkeinen = GUICtrlCreateButton("keinen", 5, 265, 40, 25, $WS_GROUP)

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

    ;Combolist
    $combo = GUICtrlCreateCombo("", 110, 10, 145, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Reboot|Sperren|Fenster|MsgBox")
    $combobutton = GUICtrlCreateButton("wechseln", 270, 10, 65, 20, $WS_GROUP)
    ; --- --- --- --- Funktionenen --- --- --- ---
    ;Reboot
    $neustart = GUICtrlCreateButton("Neustarten", 110, 100, 100, 50, $WS_GROUP)
    $herunterfahren = GUICtrlCreateButton("Herunterfahren", 110, 150, 100, 50, $WS_GROUP)
    $abmelden = GUICtrlCreateButton("Abmelden", 220, 100, 100, 50, $WS_GROUP)
    $standby = GUICtrlCreateButton("Standby", 220, 150, 100, 50, $WS_GROUP)
    GUICtrlSetState($neustart, $GUI_HIDE)
    GUICtrlSetState($herunterfahren, $GUI_HIDE)
    GUICtrlSetState($abmelden, $GUI_HIDE)
    GUICtrlSetState($standby, $GUI_HIDE)

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

    ;MsgBox
    $msgboxicon1 = GUICtrlCreateIcon("shell32.dll", 263, 110, 70)
    $msgboxicon2 = GUICtrlCreateIcon("shell32.dll", 240, 170, 70)
    GUICtrlSetState($msgboxicon1, $GUI_HIDE)
    GUICtrlSetState($msgboxicon2, $GUI_HIDE)

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

    $msgboxlabel1 = GUICtrlCreateLabel("1", 150, 72)
    $msgboxlabel2 = GUICtrlCreateLabel("2", 210, 72)
    $msgboxlabel3 = GUICtrlCreateLabel("Icon wählen:", 120, 40)
    $msgboxlabel4 = GUICtrlCreateLabel("Text eingeben:", 120, 120)
    GUICtrlSetState($msgboxlabel1, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel2, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel3, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel4, $GUI_HIDE)

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

    $msgboxinhalt = GUICtrlCreateInput("", 112, 150, 228)
    GUICtrlSetState($msgboxinhalt, $GUI_HIDE)

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

    $iconwahl1 = GUICtrlCreateRadio("Icon1", 230, 70)
    $iconwahl2 = GUICtrlCreateRadio("Icon2", 230, 90)
    GUICtrlSetState($iconwahl1, $GUI_HIDE)
    GUICtrlSetState($iconwahl2, $GUI_HIDE)

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

    $msgboxsenden = GUICtrlCreateButton("Senden", 174, 200, 100, 50)
    GUICtrlSetState($msgboxsenden, $GUI_HIDE)

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

    $pcip1 = "192.168.178.0"
    $pcip2 = "192.168.178.0"
    $pcip3 = "192.168.178.0"
    $pcip4 = "192.168.178.0"
    $pcip5 = "192.168.178.0"
    $pcip6 = "192.168.178.0"
    $pcip7 = "192.168.178.0"
    $pcip8 = "192.168.178.0"
    $pcip9 = "192.168.178.0"
    $pcip10 = "192.168.178.0"
    $pcip11 = "192.168.178.0"
    $pcip12 = "192.168.178.0"
    $pcip13 = "192.168.178.0"
    $pcip14 = "192.168.178.0"
    $pcip15 = "192.168.178.0"
    $pcip16 = "192.168.178.0"
    $pcip17 = "192.168.178.0"
    $pcip18 = "192.168.178.0"
    $pcip19 = "192.168.178.0"
    $pcip20 = "192.168.178.0"

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

    ;hostnames zu ips
    ;If $hostnametest[0] = 3 Then
    ProgressOn("IP ermitteln", "Die IP's werden ermittelt")
    TCPStartup()
    ProgressSet(5, "Rechner 1 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-01", 50) Then $pcip1 = TCPNameToIP("wks-if3-01")
    ProgressSet(10, "Rechner 2 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-02", 50) Then $pcip2 = TCPNameToIP("wks-if3-02")
    ProgressSet(15, "Rechner 3 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-03", 50) Then $pcip3 = TCPNameToIP("wks-if3-03")
    ProgressSet(20, "Rechner 4 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-04", 50) Then $pcip4 = TCPNameToIP("wks-if3-04")
    ProgressSet(25, "Rechner 5 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-05", 50) Then $pcip5 = TCPNameToIP("wks-if3-05")
    ProgressSet(30, "Rechner 6 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-06", 50) Then $pcip6 = TCPNameToIP("wks-if3-06")
    ProgressSet(35, "Rechner 7 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-07", 50) Then $pcip7 = TCPNameToIP("wks-if3-07")
    ProgressSet(40, "Rechner 8 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-08", 50) Then $pcip8 = TCPNameToIP("wks-if3-08")
    ProgressSet(45, "Rechner 9 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-09", 50) Then $pcip9 = TCPNameToIP("wks-if3-09")
    ProgressSet(50, "Rechner 10 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-10", 50) Then $pcip10 = TCPNameToIP("wks-if3-10")
    ProgressSet(55, "Rechner 11 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-11", 50) Then $pcip11 = TCPNameToIP("wks-if3-11")
    ProgressSet(60, "Rechner 12 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-12", 50) Then $pcip12 = TCPNameToIP("wks-if3-12")
    ProgressSet(65, "Rechner 13 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-13", 50) Then $pcip13 = TCPNameToIP("wks-if3-13")
    ProgressSet(70, "Rechner 14 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-14", 50) Then $pcip14 = TCPNameToIP("wks-if3-14")
    ProgressSet(75, "Rechner 15 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-15", 50) Then $pcip15 = TCPNameToIP("wks-if3-15")
    ProgressSet(80, "Rechner 16 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-16", 50) Then $pcip16 = TCPNameToIP("wks-if3-16")
    ProgressSet(85, "Rechner 17 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-17", 50) Then $pcip17 = TCPNameToIP("wks-if3-17")
    ProgressSet(90, "Rechner 18 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-18", 50) Then $pcip18 = TCPNameToIP("wks-if3-18")
    ProgressSet(95, "Rechner 19 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-19", 50) Then $pcip19 = TCPNameToIP("wks-if3-19")
    ProgressSet(100, "Rechner 20 / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-20", 50) Then $pcip20 = TCPNameToIP("wks-if3-20")
    TCPShutdown()
    ProgressOff()
    ;EndIf

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

    ;sperren
    $sperreneingabe = GUICtrlCreateButton("Eingabe sperren", 110, 100, 100, 50, $WS_GROUP)
    $sperrenbildschirm = GUICtrlCreateButton("Bildschirm sperren", 110, 150, 100, 50, $WS_GROUP)
    $entsperreneingabe = GUICtrlCreateButton("Eingabe freigeben", 220, 100, 100, 50, $WS_GROUP)
    $entsperrenbildschirm = GUICtrlCreateButton("Bildschirm freigeben", 220, 150, 100, 50, $WS_GROUP)
    GUICtrlSetState($sperreneingabe, $GUI_HIDE)
    GUICtrlSetState($sperrenbildschirm, $GUI_HIDE)
    GUICtrlSetState($entsperreneingabe, $GUI_HIDE)
    GUICtrlSetState($entsperrenbildschirm, $GUI_HIDE)

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

    ; Fenster

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

    $aktualisieren = GUICtrlCreateButton("Aktualisieren", 110, 35, 230, 20, $WS_GROUP)
    GUICtrlSetState($aktualisieren, $GUI_HIDE)

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

    ; --- --- --- ---Ende Funktionen --- --- --- ---

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

    ;starticon
    $starticon = GUICtrlCreateIcon("shell32.dll", 19, 200, 150);starticon
    GUISetState($starticon, $GUI_HIDE)

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

    UDPStartup()

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

    While 1 ; <-- Endlosschleife anfangen

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

    $nMsg = GUIGetMsg(); <-- Fange die Button-Events ab
    Switch $nMsg ;<-- Unterscheide die Events
    Case $GUI_EVENT_CLOSE ; <-- Wenn GUI geschlossen wird dann
    UDPShutdown()
    Exit ; <-- Skript beenden
    Case $Buttonuebernehmen
    ProgressOn("Bitte warten...", "Verbindungen werden hergestellt")
    If GUICtrlRead($pc1) = $GUI_CHECKED Then
    If Ping($pcip1) Then
    $verbindung1 = UDPBind($pcip1, 2000)
    Else
    ToolTip("PC 1 ist nicht erreichbar")
    GUICtrlSetState($pc1, $GUI_UNCHECKED)
    EndIf
    EndIf

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

    ProgressSet(5, "1/20")
    If GUICtrlRead($pc2) = $GUI_CHECKED Then
    If Ping($pcip2) Then
    $verbindung2 = UDPBind($pcip2, 2000)
    Else
    ToolTip("PC 2 ist nicht erreichbar")
    GUICtrlSetState($pc2, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(10, "2/20")
    If GUICtrlRead($pc3) = $GUI_CHECKED Then
    If Ping($pcip3) Then
    $verbindung3 = UDPBind($pcip3, 2000)
    Else
    ToolTip("PC 3 ist nicht erreichbar")
    GUICtrlSetState($pc3, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(15, "3/20")
    If GUICtrlRead($pc4) = $GUI_CHECKED Then
    If Ping($pcip4) Then
    $verbindung4 = UDPBind($pcip4, 2000)
    Else
    ToolTip("PC 4 ist nicht erreichbar")
    GUICtrlSetState($pc4, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(20, "4/20")
    If GUICtrlRead($pc5) = $GUI_CHECKED Then
    If Ping($pcip5) Then
    $verbindung5 = UDPBind($pcip5, 2000)
    Else
    ToolTip("PC 5 ist nicht erreichbar")
    GUICtrlSetState($pc5, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(25, "5/20")
    If GUICtrlRead($pc6) = $GUI_CHECKED Then
    If Ping($pcip6) Then
    $verbindung6 = UDPBind($pcip6, 2000)
    Else
    ToolTip("PC 6 ist nicht erreichbar")
    GUICtrlSetState($pc6, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(30, "6/20")
    If GUICtrlRead($pc7) = $GUI_CHECKED Then
    If Ping($pcip7) Then
    $verbindung7 = UDPBind($pcip7, 2000)
    Else
    ToolTip("PC 7 ist nicht erreichbar")
    GUICtrlSetState($pc7, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(35, "7/20")
    If GUICtrlRead($pc8) = $GUI_CHECKED Then
    If Ping($pcip8) Then
    $verbindung8 = UDPBind($pcip8, 2000)
    Else
    ToolTip("PC 8 ist nicht erreichbar")
    GUICtrlSetState($pc8, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(40, "8/20")
    If GUICtrlRead($pc9) = $GUI_CHECKED Then
    If Ping($pcip9) Then
    $verbindung9 = UDPBind($pcip9, 2000)
    Else
    ToolTip("PC 9 ist nicht erreichbar")
    GUICtrlSetState($pc9, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(45, "9/20")
    If GUICtrlRead($pc10) = $GUI_CHECKED Then
    If Ping($pcip10) Then
    $verbindung10 = UDPBind($pcip10, 2000)
    Else
    ToolTip("PC 10 ist nicht erreichbar")
    GUICtrlSetState($pc10, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(50, "10/20")
    If GUICtrlRead($pc11) = $GUI_CHECKED Then
    If Ping($pcip11) Then
    $verbindung11 = UDPBind($pcip11, 2000)
    Else
    ToolTip("PC 11 ist nicht erreichbar")
    GUICtrlSetState($pc11, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(55, "11/20")
    If GUICtrlRead($pc12) = $GUI_CHECKED Then
    If Ping($pcip12) Then
    $verbindung12 = UDPBind($pcip12, 2000)
    Else
    ToolTip("PC 12 ist nicht erreichbar")
    GUICtrlSetState($pc12, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(60, "12/20")
    If GUICtrlRead($pc13) = $GUI_CHECKED Then
    If Ping($pcip13) Then
    $verbindung13 = UDPBind($pcip13, 2000)
    Else
    ToolTip("PC 13 ist nicht erreichbar")
    GUICtrlSetState($pc13, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(65, "13/20")
    If GUICtrlRead($pc14) = $GUI_CHECKED Then
    If Ping($pcip14) Then
    $verbindung14 = UDPBind($pcip14, 2000)
    Else
    ToolTip("PC 14 ist nicht erreichbar")
    GUICtrlSetState($pc14, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(70, "14/20")
    If GUICtrlRead($pc15) = $GUI_CHECKED Then
    If Ping($pcip15) Then
    $verbindung15 = UDPBind($pcip15, 2000)
    Else
    ToolTip("PC 15 ist nicht erreichbar")
    GUICtrlSetState($pc15, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(80, "15/20")
    If GUICtrlRead($pc16) = $GUI_CHECKED Then
    If Ping($pcip16) Then
    $verbindung16 = UDPBind($pcip16, 2000)
    Else
    ToolTip("PC 16 ist nicht erreichbar")
    GUICtrlSetState($pc16, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(85, "16/20")
    If GUICtrlRead($pc17) = $GUI_CHECKED Then
    If Ping($pcip17) Then
    $verbindung17 = UDPBind($pcip17, 2000)
    Else
    ToolTip("PC 17 ist nicht erreichbar")
    GUICtrlSetState($pc17, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(90, "17/20")
    If GUICtrlRead($pc18) = $GUI_CHECKED Then
    If Ping($pcip18) Then
    $verbindung18 = UDPBind($pcip18, 2000)
    Else
    ToolTip("PC 18 ist nicht erreichbar")
    GUICtrlSetState($pc18, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(95, "18/20")
    If GUICtrlRead($pc19) = $GUI_CHECKED Then
    If Ping($pcip19) Then
    $verbindung19 = UDPBind($pcip19, 2000)
    Else
    ToolTip("PC 19 ist nicht erreichbar")
    GUICtrlSetState($pc19, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(97, "19/20")
    If GUICtrlRead($pc20) = $GUI_CHECKED Then
    If Ping($pcip20) Then
    $verbindung20 = UDPBind($pcip20, 2000)
    Else
    ToolTip("PC 20 ist nicht erreichbar")
    GUICtrlSetState($pc20, $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(100, "20/20")

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

    ToolTip("")
    ProgressOff()

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

    Case $Buttonalle
    GUICtrlSetState($pc1, $GUI_CHECKED)
    GUICtrlSetState($pc2, $GUI_CHECKED)
    GUICtrlSetState($pc3, $GUI_CHECKED)
    GUICtrlSetState($pc4, $GUI_CHECKED)
    GUICtrlSetState($pc5, $GUI_CHECKED)
    GUICtrlSetState($pc6, $GUI_CHECKED)
    GUICtrlSetState($pc7, $GUI_CHECKED)
    GUICtrlSetState($pc8, $GUI_CHECKED)
    GUICtrlSetState($pc9, $GUI_CHECKED)
    GUICtrlSetState($pc10, $GUI_CHECKED)
    GUICtrlSetState($pc11, $GUI_CHECKED)
    GUICtrlSetState($pc12, $GUI_CHECKED)
    GUICtrlSetState($pc13, $GUI_CHECKED)
    GUICtrlSetState($pc14, $GUI_CHECKED)
    GUICtrlSetState($pc15, $GUI_CHECKED)
    GUICtrlSetState($pc16, $GUI_CHECKED)
    GUICtrlSetState($pc17, $GUI_CHECKED)
    GUICtrlSetState($pc18, $GUI_CHECKED)
    GUICtrlSetState($pc19, $GUI_CHECKED)
    GUICtrlSetState($pc20, $GUI_CHECKED)

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

    Case $buttonkeinen
    GUICtrlSetState($pc1, $GUI_UNCHECKED)
    GUICtrlSetState($pc2, $GUI_UNCHECKED)
    GUICtrlSetState($pc3, $GUI_UNCHECKED)
    GUICtrlSetState($pc4, $GUI_UNCHECKED)
    GUICtrlSetState($pc5, $GUI_UNCHECKED)
    GUICtrlSetState($pc6, $GUI_UNCHECKED)
    GUICtrlSetState($pc7, $GUI_UNCHECKED)
    GUICtrlSetState($pc8, $GUI_UNCHECKED)
    GUICtrlSetState($pc9, $GUI_UNCHECKED)
    GUICtrlSetState($pc10, $GUI_UNCHECKED)
    GUICtrlSetState($pc11, $GUI_UNCHECKED)
    GUICtrlSetState($pc12, $GUI_UNCHECKED)
    GUICtrlSetState($pc13, $GUI_UNCHECKED)
    GUICtrlSetState($pc14, $GUI_UNCHECKED)
    GUICtrlSetState($pc15, $GUI_UNCHECKED)
    GUICtrlSetState($pc16, $GUI_UNCHECKED)
    GUICtrlSetState($pc17, $GUI_UNCHECKED)
    GUICtrlSetState($pc18, $GUI_UNCHECKED)
    GUICtrlSetState($pc19, $GUI_UNCHECKED)
    GUICtrlSetState($pc20, $GUI_UNCHECKED)

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

    Case $combobutton

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

    If GUICtrlRead($combo) = "Reboot" Then
    GUICtrlSetState($neustart, $GUI_SHOW)
    GUICtrlSetState($herunterfahren, $GUI_SHOW)
    GUICtrlSetState($abmelden, $GUI_SHOW)
    GUICtrlSetState($standby, $GUI_SHOW)

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

    Else
    GUICtrlSetState($neustart, $GUI_HIDE)
    GUICtrlSetState($herunterfahren, $GUI_HIDE)
    GUICtrlSetState($abmelden, $GUI_HIDE)
    GUICtrlSetState($standby, $GUI_HIDE)

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

    EndIf
    If GUICtrlRead($combo) = "" Then
    GUICtrlSetState($starticon, $GUI_SHOW)
    Else
    GUICtrlSetState($starticon, $GUI_HIDE)

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

    EndIf

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

    If GUICtrlRead($combo) = "MsgBox" Then
    GUICtrlSetState($msgboxicon1, $GUI_SHOW)
    GUICtrlSetState($msgboxicon2, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel1, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel2, $GUI_SHOW)
    GUICtrlSetState($iconwahl1, $GUI_SHOW)
    GUICtrlSetState($iconwahl2, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel3, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel4, $GUI_SHOW)
    GUICtrlSetState($msgboxinhalt, $GUI_SHOW)
    GUICtrlSetState($msgboxsenden, $GUI_SHOW)

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

    Else
    GUICtrlSetState($msgboxicon1, $GUI_HIDE)
    GUICtrlSetState($msgboxicon2, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel1, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel2, $GUI_HIDE)
    GUICtrlSetState($iconwahl1, $GUI_HIDE)
    GUICtrlSetState($iconwahl2, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel3, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel4, $GUI_HIDE)
    GUICtrlSetState($msgboxinhalt, $GUI_HIDE)
    GUICtrlSetState($msgboxsenden, $GUI_HIDE)

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

    EndIf

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

    If GUICtrlRead($combo) = "Sperren" Then
    GUICtrlSetState($sperreneingabe, $GUI_SHOW)
    GUICtrlSetState($sperrenbildschirm, $GUI_SHOW)
    GUICtrlSetState($entsperreneingabe, $GUI_SHOW)
    GUICtrlSetState($entsperrenbildschirm, $GUI_SHOW)
    Else
    GUICtrlSetState($sperreneingabe, $GUI_HIDE)
    GUICtrlSetState($sperrenbildschirm, $GUI_HIDE)
    GUICtrlSetState($entsperreneingabe, $GUI_HIDE)
    GUICtrlSetState($entsperrenbildschirm, $GUI_HIDE)

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

    EndIf

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

    If GUICtrlRead($combo) = "Fenster" Then
    GUICtrlSetState($aktualisieren, $GUI_SHOW)
    Else
    GUICtrlSetState($aktualisieren, $GUI_HIDE)

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

    EndIf

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

    Case $aktualisieren
    $standartheight = 50
    ProgressOn("Bitte warten...", "Infos werden abgerufen")
    If Ping($pcip1) Then
    If GUICtrlRead($pc1) = $GUI_CHECKED Then
    UDPSend($verbindung1, "fensteranfrage")
    While 1
    $datenpcfenster1 = UDPRecv($verbindung1, 50000)
    If $datenpcfenster1 <> "" Then ExitLoop
    ToolTip("warte auf PC 1")
    WEnd
    ToolTip("")
    $pcfenster1 = StringSplit($datenpcfenster1, "%")
    For $i2 To $pcfenster1[0]
    GUICtrlCreateLabel($pcfenster1, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(5,"")

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

    If Ping($pcip2) Then
    If GUICtrlRead($pc2) = $GUI_CHECKED Then
    UDPSend($verbindung2, "fensteranfrage")
    While 1
    $datenpcfenster2 = UDPRecv($verbindung2, 5000)
    If $datenpcfenster2 <> "" Then ExitLoop
    ToolTip("warte auf PC 2")
    WEnd
    ToolTip("")
    $pcfenster2 = StringSplit($datenpcfenster2, "%")
    For $i2 To $pcfenster2[0]
    GUICtrlCreateLabel($pcfenster2, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(10,"")

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

    If Ping($pcip3) Then
    If GUICtrlRead($pc3) = $GUI_CHECKED Then
    UDPSend($verbindung3, "fensteranfrage")
    While 1
    $datenpcfenster3 = UDPRecv($verbindung3, 5000)
    If $datenpcfenster3 <> "" Then ExitLoop
    ToolTip("warte auf PC 3")
    WEnd
    ToolTip("")
    $pcfenster3 = StringSplit($datenpcfenster3, "%")
    For $i2 To $pcfenster3[0]
    GUICtrlCreateLabel($pcfenster3, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(15,"")

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

    If Ping($pcip4) Then
    If GUICtrlRead($pc4) = $GUI_CHECKED Then
    UDPSend($verbindung4, "fensteranfrage")
    While 1
    $datenpcfenster4 = UDPRecv($verbindung4, 5000)
    If $datenpcfenster4 <> "" Then ExitLoop
    ToolTip("warte auf PC 4")
    WEnd
    ToolTip("")
    $pcfenster4 = StringSplit($datenpcfenster4, "%")
    For $i2 To $pcfenster4[0]
    GUICtrlCreateLabel($pcfenster4, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(20,"")

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

    If Ping($pcip5) Then
    If GUICtrlRead($pc5) = $GUI_CHECKED Then
    UDPSend($verbindung5, "fensteranfrage")
    While 1
    $datenpcfenster5 = UDPRecv($verbindung5, 5000)
    If $datenpcfenster5 <> "" Then ExitLoop
    ToolTip("warte auf PC 5")
    WEnd
    ToolTip("")
    $pcfenster5 = StringSplit($datenpcfenster5, "%")
    For $i2 To $pcfenster5[0]
    GUICtrlCreateLabel($pcfenster5, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(25,"")

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

    If Ping($pcip6) Then
    If GUICtrlRead($pc6) = $GUI_CHECKED Then
    UDPSend($verbindung6, "fensteranfrage")
    While 1
    $datenpcfenster6 = UDPRecv($verbindung6, 5000)
    If $datenpcfenster6 <> "" Then ExitLoop
    ToolTip("warte auf PC 6")
    WEnd
    ToolTip("")
    $pcfenster6 = StringSplit($datenpcfenster6, "%")
    For $i2 To $pcfenster6[0]
    GUICtrlCreateLabel($pcfenster6, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(30,"")

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

    If Ping($pcip7) Then
    If GUICtrlRead($pc7) = $GUI_CHECKED Then
    UDPSend($verbindung7, "fensteranfrage")
    While 1
    $datenpcfenster7 = UDPRecv($verbindung7, 5000)
    If $datenpcfenster1 <> "" Then ExitLoop
    ToolTip("warte auf PC 7")
    WEnd
    ToolTip("")
    $pcfenster7 = StringSplit($datenpcfenster7, "%")
    For $i2 To $pcfenster7[0]
    GUICtrlCreateLabel($pcfenster7, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(35,"")

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

    If Ping($pcip8) Then
    If GUICtrlRead($pc8) = $GUI_CHECKED Then
    UDPSend($verbindung8, "fensteranfrage")
    While 1
    $datenpcfenster8 = UDPRecv($verbindung8, 5000)
    If $datenpcfenster1 <> "" Then ExitLoop
    ToolTip("warte auf PC 8")
    WEnd
    ToolTip("")
    $pcfenster8 = StringSplit($datenpcfenster8, "%")
    For $i2 To $pcfenster8[0]
    GUICtrlCreateLabel($pcfenster8, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(40,"")

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

    If Ping($pcip9) Then
    If GUICtrlRead($pc9) = $GUI_CHECKED Then
    UDPSend($verbindung9, "fensteranfrage")
    While 1
    $datenpcfenster9 = UDPRecv($verbindung9, 5000)
    If $datenpcfenster9 <> "" Then ExitLoop
    ToolTip("warte auf PC 9")
    WEnd
    ToolTip("")
    $pcfenster9 = StringSplit($datenpcfenster9, "%")
    For $i2 To $pcfenster9[0]
    GUICtrlCreateLabel($pcfenster9, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(45,"")

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

    If Ping($pcip10) Then
    If GUICtrlRead($pc10) = $GUI_CHECKED Then
    UDPSend($verbindung10, "fensteranfrage")
    While 1
    $datenpcfenster10 = UDPRecv($verbindung10, 5000)
    If $datenpcfenster10 <> "" Then ExitLoop
    ToolTip("warte auf PC 10")
    WEnd
    ToolTip("")
    $pcfenster10 = StringSplit($datenpcfenster10, "%")
    For $i2 To $pcfenster10[0]
    GUICtrlCreateLabel($pcfenster10, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(50,"")

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

    If Ping($pcip11) Then
    If GUICtrlRead($pc11) = $GUI_CHECKED Then
    UDPSend($verbindung11, "fensteranfrage")
    While 1
    $datenpcfenster11 = UDPRecv($verbindung11, 5000)
    If $datenpcfenster11 <> "" Then ExitLoop
    ToolTip("warte auf PC 11")
    WEnd
    ToolTip("")
    $pcfenster11 = StringSplit($datenpcfenster11, "%")
    For $i2 To $pcfenster11[0]
    GUICtrlCreateLabel($pcfenster11, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(55,"")

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

    If Ping($pcip12) Then
    If GUICtrlRead($pc12) = $GUI_CHECKED Then
    UDPSend($verbindung12, "fensteranfrage")
    While 1
    $datenpcfenster12 = UDPRecv($verbindung12, 5000)
    If $datenpcfenster12 <> "" Then ExitLoop
    ToolTip("warte auf PC 12")
    WEnd
    ToolTip("")
    $pcfenster12 = StringSplit($datenpcfenster12, "%")
    For $i2 To $pcfenster12[0]
    GUICtrlCreateLabel($pcfenster12, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(60,"")

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

    If Ping($pcip13) Then
    If GUICtrlRead($pc13) = $GUI_CHECKED Then
    UDPSend($verbindung13, "fensteranfrage")
    While 1
    $datenpcfenster13 = UDPRecv($verbindung13, 5000)
    If $datenpcfenster13 <> "" Then ExitLoop
    ToolTip("warte auf PC 13")
    WEnd
    ToolTip("")
    $pcfenster13 = StringSplit($datenpcfenster13, "%")
    For $i2 To $pcfenster13[0]
    GUICtrlCreateLabel($pcfenster13, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(65,"")

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

    If Ping($pcip14) Then
    If GUICtrlRead($pc14) = $GUI_CHECKED Then
    UDPSend($verbindung14, "fensteranfrage")
    While 1
    $datenpcfenster14 = UDPRecv($verbindung14, 5000)
    If $datenpcfenster14 <> "" Then ExitLoop
    ToolTip("warte auf PC 14")
    WEnd
    ToolTip("")
    $pcfenster14 = StringSplit($datenpcfenster14, "%")
    For $i2 To $pcfenster14[0]
    GUICtrlCreateLabel($pcfenster14, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(70,"")

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

    If Ping($pcip15) Then
    If GUICtrlRead($pc15) = $GUI_CHECKED Then
    UDPSend($verbindung15, "fensteranfrage")
    While 1
    $datenpcfenster15 = UDPRecv($verbindung15, 5000)
    If $datenpcfenster15 <> "" Then ExitLoop
    ToolTip("warte auf PC 15")
    WEnd
    ToolTip("")
    $pcfenster15 = StringSplit($datenpcfenster15, "%")
    For $i2 To $pcfenster15[0]
    GUICtrlCreateLabel($pcfenster15, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(75,"")

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

    If Ping($pcip16) Then
    If GUICtrlRead($pc16) = $GUI_CHECKED Then
    UDPSend($verbindung16, "fensteranfrage")
    While 1
    $datenpcfenster16 = UDPRecv($verbindung16, 5000)
    If $datenpcfenster16 <> "" Then ExitLoop
    ToolTip("warte auf PC 16")
    WEnd
    ToolTip("")
    $pcfenster16 = StringSplit($datenpcfenster16, "%")
    For $i2 To $pcfenster16[0]
    GUICtrlCreateLabel($pcfenster16, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(80,"")

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

    If Ping($pcip17) Then
    If GUICtrlRead($pc17) = $GUI_CHECKED Then
    UDPSend($verbindung1, "fensteranfrage")
    While 1
    $datenpcfenster17 = UDPRecv($verbindung17, 5000)
    If $datenpcfenster17 <> "" Then ExitLoop
    ToolTip("warte auf PC 17")
    WEnd
    ToolTip("")
    $pcfenster17 = StringSplit($datenpcfenster17, "%")
    For $i2 To $pcfenster17[0]
    GUICtrlCreateLabel($pcfenster17, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(85,"")

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

    If Ping($pcip18) Then
    If GUICtrlRead($pc18) = $GUI_CHECKED Then
    UDPSend($verbindung18, "fensteranfrage")
    While 1
    $datenpcfenster1 = UDPRecv($verbindung18, 5000)
    If $datenpcfenster18 <> "" Then ExitLoop
    ToolTip("warte auf PC 18")
    WEnd
    ToolTip("")
    $pcfenster18 = StringSplit($datenpcfenster18, "%")
    For $i2 To $pcfenster18[0]
    GUICtrlCreateLabel($pcfenster18, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(90,"")

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

    If Ping($pcip19) Then
    If GUICtrlRead($pc19) = $GUI_CHECKED Then
    UDPSend($verbindung19, "fensteranfrage")
    While 1
    $datenpcfenster19 = UDPRecv($verbindung19, 5000)
    If $datenpcfenster19 <> "" Then ExitLoop
    ToolTip("warte auf PC 19")
    WEnd
    ToolTip("")
    $pcfenster19 = StringSplit($datenpcfenster19, "%")
    For $i2 To $pcfenster19[0]
    GUICtrlCreateLabel($pcfenster19, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(95,"")

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

    If Ping($pcip20) Then
    If GUICtrlRead($pc20) = $GUI_CHECKED Then
    UDPSend($verbindung20, "fensteranfrage")
    While 1
    $datenpcfenster20 = UDPRecv($verbindung20, 5000)
    If $datenpcfenster20 <> "" Then ExitLoop
    ToolTip("warte auf PC 20")
    WEnd
    ToolTip("")
    $pcfenster20 = StringSplit($datenpcfenster20, "%")
    For $i2 To $pcfenster20[0]
    GUICtrlCreateLabel($pcfenster20, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(100,"")
    ProgressOff()

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

    EndSwitch

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

    WEnd ; <-- Beginne Schleife von Vorne;### Tidy Error -> while is never closed in your script.

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


    Danke schonmal im vorraus^^

  • Wenn ich das Script starten will spuckt Au3Check erstmal direkt 4 Fehler aus... ich gucks mir mal an :)

    Wenn ich mich in einigen Tagen nicht mehr melde bin ich an Kopfzerbrechen gestorben ;)

    Edit1: Fehler 1: Zeile 535, der Wert $i2 muss auch (mit =) einen Wert zugewiesen bekommen. Welcher müsste das sein? Ich such weiter...

    Edit2: Kann es sein dass du das konsequent bei ALLEN For-To-Next-Schleifen gemacht hast ?(

  • So, hab jz alle For-Schleifen gefixt, und außerdem hattest du in Zeile 838 $datenpcfenster1 stehen, ich nehm mal an das es $datenpcfenster18 heißen müsste, hat nämlich n error ausgespuckt. Jz guck ich mir das Programm mal genauer an...

    Das geht wirklich 80% kürzer...

  • ^^ habe mir schon fast gedacht, das man das ganze viel kürzen kann, nur leider ist das etwas, worin ich mcih noch üben sollte ;)
    ach ja, vllt. solltet ihr folgenden dateien noch im @skriptdir haben!

  • Guck dir mal die For-Schleifen und Arrays genauer an, und dann mach nicht für jeden PC extra 3 oder noch mehr Variablen, sondern pack alles in eine Variable mit mehreren Dimensionen, und dann lässt du alles über ne For-Schleife laufen.

    Das könnte zum Beispiel so aussehen:

    $pc[0][0] = Anzahl der PCs
    $pc[1][1] = Handle der Checkbox für PC 1
    $pc[1][2] = IP von PC nummer 1
    $pc[1][3] = Die UDP-Verbindung, die du bisher in $verbindung1 gespeichert hast
    $pc[1][4] = Daten, die bisher in $datenpcfenster1 waren
    $pc[1][5] = Daten, die in $pcfenster1 gespeichert waren
    ... Eventuell noch mehr Variablen, die ich übersehen habe. Dann hat das auch den Vorteil, wenn ein neuer PC hinzukommt, muss er nur als $pc[x][2] mit seiner IP eingetragen, $pc[0][0] um 1 erhöht werden und schon ist er auch dabei. Du musst dann nur mit der Platzierung der Checkboxen aufpassen, das ginge auch über For, wär aber wahrscheinlich kompliziert.

    Edit: Am allerbesten wär das dann noch mit einer INI, damit nicht jedesmal im Script gesucht werden muss, wenn sich was ändert.

  • habs mal um 500 zeilen gekürzt^^

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    ;~ Includes
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <ComboConstants.au3> ;<- Für Combolist
    #include <inet.au3> ;<- zum prüfen ob PChostname die endung le hat
    #include <Misc.au3> ;<- zum prüfen, ob Programm bereits läüft
    ;testen, ob Programm bereits läuft.Wenn ja: Hinweis darauf und beenden
    If _Singleton("Skript", 1) = 0 Then
    MsgBox(64, "MasterControl", "MasterControl läuft bereits", 5)
    Exit
    EndIf
    ; teste, ob Programm auf Lehrer PC ausgeführt wird. Wenn nicht: Meldung + Beenden
    TCPStartup()
    $hostname = _TCPIpToName(@IPAddress1)
    $hostnametest = StringSplit($hostname, "-")

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

    If $hostnametest[0] = 3 Then ;wenn im hostname 3 - vorhanden sind dann

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

    If $hostnametest[3] <> "le" Then
    MsgBox(64, "MasterControl", "Dieses Programm darf nur auf Lehrerrechnern ausgeführt werden")
    Exit
    EndIf
    If $hostnametest[3] <> "LE" Then
    MsgBox(64, "MasterControl", "Dieses Programm darf nur auf Lehrerrechnern ausgeführt werden")
    Exit
    EndIf
    Else ; wenn im hostname keine 2 - vorhanden sind
    MsgBox(64, "MasterControl", "Dieses Programm sollte auf einem Lehrerrechner der Schule ausgeführt werden")
    EndIf

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

    TCPShutdown()

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

    ;~ Hier startet der GUI-Code
    $Gui = GUICreate("MasterControl 1.0 BETA", 350, 320); <-- Erstelle die GUI
    GUICtrlCreateLabel("Auswahl der PCs", 10, 20)
    ; checkboxen zum PCs auswählen
    Dim $pc[21]
    Dim $pcip[21]
    Dim $verbindung[21]
    Dim $datenpcfenster[21]

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

    For $i = 1 To 20
    $pc[$i] = GUICtrlCreateCheckbox($i, 10 + (($i > 10) * 40), 30 + ($i - (($i > 10) * 10)) * 20)
    Next

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

    GUISetState(@SW_SHOW)

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

    ;copyright
    GUICtrlCreateLabel("© Copyright Alexander Imka", 110, 295)

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

    ;Icon setzten
    If FileExists(@ScriptDir & "\icon.ico") Then
    GUISetIcon(@ScriptDir & "\icon.ico")
    Else
    MsgBox(48, "Icon fehlt", "Das Icon wurde nicht gefunden. Das Programm wird ohne das Icon weiter ausgeführt!")
    EndIf

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

    ;trennlinie
    GUICtrlCreatePic("linie.jpg", 100, 5, 2, 310)
    $Buttonuebernehmen = GUICtrlCreateButton("Übernehmen", 5, 295, 90, 25, $WS_GROUP)
    $Buttonalle = GUICtrlCreateButton("alle", 55, 265, 40, 25, $WS_GROUP)
    $buttonkeinen = GUICtrlCreateButton("keinen", 5, 265, 40, 25, $WS_GROUP)

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

    ;Combolist
    $combo = GUICtrlCreateCombo("", 110, 10, 145, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL))
    GUICtrlSetData(-1, "Reboot|Sperren|Fenster|MsgBox")
    $combobutton = GUICtrlCreateButton("wechseln", 270, 10, 65, 20, $WS_GROUP)
    ; --- --- --- --- Funktionenen --- --- --- ---
    ;Reboot
    $neustart = GUICtrlCreateButton("Neustarten", 110, 100, 100, 50, $WS_GROUP)
    $herunterfahren = GUICtrlCreateButton("Herunterfahren", 110, 150, 100, 50, $WS_GROUP)
    $abmelden = GUICtrlCreateButton("Abmelden", 220, 100, 100, 50, $WS_GROUP)
    $standby = GUICtrlCreateButton("Standby", 220, 150, 100, 50, $WS_GROUP)
    GUICtrlSetState($neustart, $GUI_HIDE)
    GUICtrlSetState($herunterfahren, $GUI_HIDE)
    GUICtrlSetState($abmelden, $GUI_HIDE)
    GUICtrlSetState($standby, $GUI_HIDE)

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

    ;MsgBox
    $msgboxicon1 = GUICtrlCreateIcon("shell32.dll", 263, 110, 70)
    $msgboxicon2 = GUICtrlCreateIcon("shell32.dll", 240, 170, 70)
    GUICtrlSetState($msgboxicon1, $GUI_HIDE)
    GUICtrlSetState($msgboxicon2, $GUI_HIDE)

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

    $msgboxlabel1 = GUICtrlCreateLabel("1", 150, 72)
    $msgboxlabel2 = GUICtrlCreateLabel("2", 210, 72)
    $msgboxlabel3 = GUICtrlCreateLabel("Icon wählen:", 120, 40)
    $msgboxlabel4 = GUICtrlCreateLabel("Text eingeben:", 120, 120)
    GUICtrlSetState($msgboxlabel1, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel2, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel3, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel4, $GUI_HIDE)

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

    $msgboxinhalt = GUICtrlCreateInput("", 112, 150, 228)
    GUICtrlSetState($msgboxinhalt, $GUI_HIDE)

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

    $iconwahl1 = GUICtrlCreateRadio("Icon1", 230, 70)
    $iconwahl2 = GUICtrlCreateRadio("Icon2", 230, 90)
    GUICtrlSetState($iconwahl1, $GUI_HIDE)
    GUICtrlSetState($iconwahl2, $GUI_HIDE)

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

    $msgboxsenden = GUICtrlCreateButton("Senden", 174, 200, 100, 50)
    GUICtrlSetState($msgboxsenden, $GUI_HIDE)

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

    $pcip[1] = "127.0.0.1"
    $pcip[2] = "192.168.1.100"
    $pcip[3] = "192.168.178.0"
    $pcip[4] = "192.168.178.0"
    $pcip[5] = "192.168.178.0"
    $pcip[6] = "192.168.178.0"
    $pcip[7] = "192.168.178.0"
    $pcip[8] = "192.168.178.0"
    $pcip[9] = "192.168.178.0"
    $pcip[10] = "192.168.178.0"
    $pcip[11] = "192.168.178.0"
    $pcip[12] = "192.168.178.0"
    $pcip[13] = "192.168.178.0"
    $pcip[14] = "192.168.178.0"
    $pcip[15] = "192.168.178.0"
    $pcip[16] = "192.168.178.0"
    $pcip[17] = "192.168.178.0"
    $pcip[18] = "192.168.178.0"
    $pcip[19] = "192.168.178.0"
    $pcip[20] = "192.168.178.0"

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

    ;hostnames zu ips
    ;If $hostnametest[0] = 3 Then
    ProgressOn("IP ermitteln", "Die IP's werden ermittelt")
    TCPStartup()

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

    For $i = 1 To 20
    $r = StringFormat("_%02u%", $i)
    ProgressSet(5 * $i, "Rechner " & $i & " / 20", "Die IP's werden ermittelt")
    If Ping("wks-if3-" & $r, 50) Then $pcip[$i] = TCPNameToIP("wks-if3-" & $r)

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

    Next
    _arraydisplay($pcip)

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

    TCPShutdown()
    ProgressOff()
    ;EndIf

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

    ;sperren
    $sperreneingabe = GUICtrlCreateButton("Eingabe sperren", 110, 100, 100, 50, $WS_GROUP)
    $sperrenbildschirm = GUICtrlCreateButton("Bildschirm sperren", 110, 150, 100, 50, $WS_GROUP)
    $entsperreneingabe = GUICtrlCreateButton("Eingabe freigeben", 220, 100, 100, 50, $WS_GROUP)
    $entsperrenbildschirm = GUICtrlCreateButton("Bildschirm freigeben", 220, 150, 100, 50, $WS_GROUP)
    GUICtrlSetState($sperreneingabe, $GUI_HIDE)
    GUICtrlSetState($sperrenbildschirm, $GUI_HIDE)
    GUICtrlSetState($entsperreneingabe, $GUI_HIDE)
    GUICtrlSetState($entsperrenbildschirm, $GUI_HIDE)

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

    ; Fenster

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

    $aktualisieren = GUICtrlCreateButton("Aktualisieren", 110, 35, 230, 20, $WS_GROUP)
    GUICtrlSetState($aktualisieren, $GUI_HIDE)

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

    ; --- --- --- ---Ende Funktionen --- --- --- ---

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

    ;starticon
    $starticon = GUICtrlCreateIcon("shell32.dll", 19, 200, 150);starticon
    GUISetState($starticon, $GUI_HIDE)

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

    UDPStartup()

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

    While 1 ; <-- Endlosschleife anfangen

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

    $nMsg = GUIGetMsg(); <-- Fange die Button-Events ab
    Switch $nMsg ;<-- Unterscheide die Events
    Case $GUI_EVENT_CLOSE ; <-- Wenn GUI geschlossen wird dann
    UDPShutdown()
    Exit ; <-- Skript beenden
    Case $Buttonuebernehmen
    ProgressOn("Bitte warten...", "Verbindungen werden hergestellt")

    For $i = 1 To 20

    If GUICtrlRead($pc[$i]) = $GUI_CHECKED Then
    If Ping($pcip[$i]) Then
    $verbindung[$i] = UDPBind($pcip[$i], 2000)
    Else
    ToolTip("PC " & $i & " ist nicht erreichbar")
    sleep(1000)
    GUICtrlSetState($pc[$i], $GUI_UNCHECKED)
    EndIf
    EndIf
    ProgressSet(5 * $i, $i & "/20")

    sleep(200)
    Next
    _arraydisplay($verbindung)
    ToolTip("")
    ProgressOff()

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

    Case $Buttonalle
    For $i = 1 To 20
    GUICtrlSetState($pc[$i], $GUI_CHECKED)
    Next
    Case $buttonkeinen
    For $i = 1 To 20
    GUICtrlSetState($pc[$i], $GUI_UNCHECKED)
    Next
    Case $combobutton

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

    If GUICtrlRead($combo) = "Reboot" Then
    GUICtrlSetState($neustart, $GUI_SHOW)
    GUICtrlSetState($herunterfahren, $GUI_SHOW)
    GUICtrlSetState($abmelden, $GUI_SHOW)
    GUICtrlSetState($standby, $GUI_SHOW)

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

    Else
    GUICtrlSetState($neustart, $GUI_HIDE)
    GUICtrlSetState($herunterfahren, $GUI_HIDE)
    GUICtrlSetState($abmelden, $GUI_HIDE)
    GUICtrlSetState($standby, $GUI_HIDE)

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

    EndIf
    If GUICtrlRead($combo) = "" Then
    GUICtrlSetState($starticon, $GUI_SHOW)
    Else
    GUICtrlSetState($starticon, $GUI_HIDE)

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

    EndIf

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

    If GUICtrlRead($combo) = "MsgBox" Then
    GUICtrlSetState($msgboxicon1, $GUI_SHOW)
    GUICtrlSetState($msgboxicon2, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel1, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel2, $GUI_SHOW)
    GUICtrlSetState($iconwahl1, $GUI_SHOW)
    GUICtrlSetState($iconwahl2, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel3, $GUI_SHOW)
    GUICtrlSetState($msgboxlabel4, $GUI_SHOW)
    GUICtrlSetState($msgboxinhalt, $GUI_SHOW)
    GUICtrlSetState($msgboxsenden, $GUI_SHOW)
    sleep(2000)

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

    Else
    GUICtrlSetState($msgboxicon1, $GUI_HIDE)
    GUICtrlSetState($msgboxicon2, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel1, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel2, $GUI_HIDE)
    GUICtrlSetState($iconwahl1, $GUI_HIDE)
    GUICtrlSetState($iconwahl2, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel3, $GUI_HIDE)
    GUICtrlSetState($msgboxlabel4, $GUI_HIDE)
    GUICtrlSetState($msgboxinhalt, $GUI_HIDE)
    GUICtrlSetState($msgboxsenden, $GUI_HIDE)

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

    EndIf

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

    If GUICtrlRead($combo) = "Sperren" Then
    GUICtrlSetState($sperreneingabe, $GUI_SHOW)
    GUICtrlSetState($sperrenbildschirm, $GUI_SHOW)
    GUICtrlSetState($entsperreneingabe, $GUI_SHOW)
    GUICtrlSetState($entsperrenbildschirm, $GUI_SHOW)
    Else
    GUICtrlSetState($sperreneingabe, $GUI_HIDE)
    GUICtrlSetState($sperrenbildschirm, $GUI_HIDE)
    GUICtrlSetState($entsperreneingabe, $GUI_HIDE)
    GUICtrlSetState($entsperrenbildschirm, $GUI_HIDE)

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

    EndIf

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

    If GUICtrlRead($combo) = "Fenster" Then
    GUICtrlSetState($aktualisieren, $GUI_SHOW)
    Else
    GUICtrlSetState($aktualisieren, $GUI_HIDE)

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

    EndIf

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

    Case $aktualisieren
    $standartheight = 50
    ProgressOn("Bitte warten...", "Infos werden abgerufen")
    For $i = 1 To 20
    If Ping($pcip[$i]) Then
    If GUICtrlRead($pc[$i]) = $GUI_CHECKED Then
    UDPSend($verbindung[$i], "fensteranfrage")
    While 1
    $datenpcfenster[$i] = UDPRecv($verbindung[$i], 50000)
    If $datenpcfenster[$i] <> "" Then ExitLoop
    ToolTip("warte auf PC " & $i)
    WEnd
    ToolTip("")
    $pcfenster1 = StringSplit($datenpcfenster[$i], "%")
    For $x = 2 To $pcfenster1[0]
    GUICtrlCreateLabel($pcfenster1, 110, $standartheight)
    $standartheight += 10
    Next
    EndIf
    EndIf
    ProgressSet(5 * $i, "")
    Next

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

    ProgressOff()

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

    EndSwitch

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

    WEnd ; <-- Beginne Schleife von Vorne;### Tidy Error -> while is never closed in your script.

    [/autoit]

    Die Idee finde ich nicht schlecht, was ich nicht so ganz verstanden habe ist die Verwendung von UDP?! Gerade bei solch einem Tool ist es wichtig, daß die Pakete auch ankommen, bzw der Lehrer eine Rückmeldung erhält. Das ist doch bei UDP nur mit viel Protokollschreibkram möglich, der bei TCP komplett wegfällt....


    Zitat

    Du musst dann nur mit der Platzierung der Checkboxen aufpassen, das ginge auch über For, wär aber wahrscheinlich kompliziert.

    [autoit]

    For $i = 1 To 20
    $pc[$i] = GUICtrlCreateCheckbox($i, 10 + (($i > 10) * 40), 30 + ($i - (($i > 10) * 10)) * 20)
    Next

    [/autoit]


    ciao
    Andy

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (19. Oktober 2009 um 13:25)

  • Jonathan, meine alten Augen brauchen immer bissl Zeit, komplette GuI´s zu erfassen. Wenn die in einer hundertstel Sekunde übern Bildschirm fliegen, pack ich das nicht mehr^^
    Ausserdem wollte ich dort etwas nachschauen, habs aber wieder zurückgeändert und nur die Zeile vergessen rauszumachen

    @simon
    wks-if3-....das sind die Rechnernamen, die werden per

    [autoit]

    TCPNameToIP

    [/autoit]

    in IP-Adressen aufgelöst

  • Ist das speziel für ein paar computer oder allgemein für jeden computer zb. in einer Schule


    Bei uns in der schule ist das mit den hsotnames so aufgebaut:

    [autoit]


    $if = "3" ;Raumnummer von PC raum (bei uns 1 - 8 )
    $rechner = 11
    $hostname = "wks-if" & $if & "-" & $rechner

    [/autoit]
  • Du könntest ja auch noch eine kleine gui ganz am anfang machen mit der man es benutzerdefiniert machen kann
    die hostnames sind ja die pcnamen

  • Ich glaube, es ist so gemeint, das am Anfang in einem GUI die Namen der PCs abgefragt werde (Defaults können ja in einer INI stehen), sodass das Programm allgemein und nicht nur für die Schule benutzt werden kann.

  • Ich habe gemeint das man am anfang des startens eine gui geöffnet wird in der man alle pc namen eintragen kann damit es nicht nur für deine schule sondern für alle schulen geht oder für zuhause

  • empfehle dass mal deinen lehrern, wenn sie es nicht bereits haben

    http://www.netcontrol32.de/

    läuft absolut einwandfrei...was für schüler jetz nicht unbedingt toll ist, aber mit ein paar autoit scripten kann man vieles beim programm umgehen, was ich sehr zum vorteil finde xD

  • Oder iTalc(http://italc.sf.net/), is ne komplette Fernsteuerungssoftware mit Bildschirmkontrolle etc.

    (Aber war schon lustig zu sehen, wie der Typ von der Technikabteilung geguckt hat als die halbe Klasse(Laptopklasse ;) ) trotz HDGuard plötzlich kein iTalc mehr draufhatte. Tja, LiveCDs bzw. 2te Partition hilft immer. Die waren aber auch dumm von der Technikabteilung der Stadt... Haben ne schulische und ne private Partition draufgemacht, schulische mit HDGuard, aber von der privaten konnteste alles auf der schulischen ändern 8) Und weil sowieso andauernd irgendwas nit funktioniert hat is das auch nie besonders als Ausnahme aufgefallen, die haben bei allem Fehler eingebaut. :D )