1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. elysium

Beiträge von elysium

  • ISN AutoIt Studio

    • elysium
    • 26. März 2021 um 08:01

    Ja, vielen Dank dafür! Hab erst vor paar Tagen nach einem Update gesucht und mir schon Sorgen gemacht, ob Du eventuell keine Zeit mehr für das Projekt hast.

    Auf jeden Fall ein unglaublich tolles Programm :thumbup:

    So, jetzt gleich mal updaten gehen :party:

  • FTP Upload eines Screenshots

    • elysium
    • 5. November 2020 um 09:30

    Ich schubs das mal ganz vorsichtig wieder nach oben, vielleicht kann mir ja doch noch wer einen Hinweis auf den Fehler geben.

  • FTP Upload eines Screenshots

    • elysium
    • 28. Oktober 2020 um 10:27

    Hallo,

    Ja, das weiß ich, habe es auch schon mit einem Pfad zu einem Ordner gemacht.

    Er speichert dann die leere Datei in den Ordner aber das Problem mit dem Programmabsturz bleibt bestehen.

    Ich verbinde mich später mit einem FTP-User der direkt nur zu einem bestimmten Ordner kommt, daher keine Pfadangabe an dieser Stelle.

    Gruß,

    ely

  • FTP Upload eines Screenshots

    • elysium
    • 27. Oktober 2020 um 20:06

    Hallo zusammen,

    ich habe vor einiger Zeit, mit eurer Hilfe, ein kleines Programm gebastelt, welches mir in einer Endlosschleife, alle paar Minuten, einen Screenshot erstellt und den alten überschreibt.

    Mit einem Freeware-Programm schnappe ich mir dann den Screenshot und lade ihn auf einen FTP-Server hoch.

    Nun möchte ich das gerne alles in einem Programm umsetzten.

    Man soll seine FTP-Zugangsdaten per Textfeld eingeben können, den Zeitintervall auswählen und anschließend das Programm starten.

    Sobald das Programm gestartet wurde, wird der erste Screenshot erstellt und lokal gespeichert.

    Anschließend, soll das Programm den Screenshot nehmen und ihn auf den FTP-Server schieben.

    Nach Ablauf des Zeitintervalls, beginnt alles von vorne.

    Nun schreibe ich da schon ein paar Tage dran rum und es ist alles noch eine große Baustelle, daher schon einmal Sorry für den Chaos-Code :S

    Wenn ich das Programm starte, speichert er schonmal den Screenshot und auf dem FTP-Server erscheint auch eine Datei namens screenshot.jpg.

    Nun habe ich aber 2 sehr große Probleme:

    1. Die screenshot.jpg auf dem Server ist 0kb groß und wenn ich sie aufrufe, ist da einfach nur alles weiß.

    Also kein Screenshot sondern irgendwie wie eine leere Datei die einfach nur screenshot.jpg heißt.

    2. Ich habe irgendein Problem mit der Funktion FtpVerbindung() , sobald ich diese aufrufe (das tue ich in der Funktion HuntingStart(), nachdem der Button "Programm starten" gedrückt wurde), erscheint zwar diese merkwürdige leere Datei auf dem Server aber das Programm hängt sich auf.

    Man kann das GUI nicht mehr bewegen und es dauert einige Sekunden, bis ich das Fenster schließen kann.

    Für meine Verhältnisse, ist das jetzt schon ein recht umfangreiches Programm, weshalb ich gerade stark auf dem Schlauch stehe.

    Könnt ihr mir eventuell einen Hinweis geben, wo mein Fehler liegt?

    Danke und Gruß,

    ely


    Spoiler anzeigen
    AutoIt
    ;*****************************************
    ;ScreenHunter_2.au3 by saryo
    ;Erstellt mit ISN AutoIt Studio v. 1.11
    ;*****************************************
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <UpDownConstants.au3>
    #include <EditConstants.au3>
    #include <ScreenCapture.au3>
    #include <File.au3>
    #include <FTPEx.au3>
    #include <MsgBoxConstants.au3>
    
    ; Erstellt GUI
    $ScreenHunter = GUICreate("Screenhunter 2.0",560,430,-1,-1,-1,-1)
        GUISetState(@SW_SHOW, $ScreenHunter)
    
    ; START Gruppe FTP-Daten
    GUICtrlCreateGroup("FTP Daten",20,20,250,250,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
        ; Textfeld: FTP-Hostname
        $ftpHostname = GUICtrlCreateInput("",40,70,210,20,-1,$WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("FTP-Hostname:",40,50,210,15,-1,-1)
        GUICtrlSetBkColor(-1,"-2")
        ; Textfeld: FTP-Login-Name
        $ftpLoginName = GUICtrlCreateInput("",40,130,210,20,-1,$WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("FTP-Login-Name:",40,110,210,15,-1,-1)
        GUICtrlSetBkColor(-1,"-2")
        ; Textfeld: FTP-Passwort
        $ftpPasswort = GUICtrlCreateInput("",40,190,210,20,$ES_PASSWORD,$WS_EX_CLIENTEDGE)
        GUICtrlCreateLabel("FTP-Passwort:",40,170,210,15,-1,-1)
        GUICtrlSetBkColor(-1,"-2")
        ; Input Up/Down: FTP-Port
        GUICtrlCreateLabel("Port:",40,225,30,20,$SS_CENTERIMAGE,-1)
        GUICtrlSetBkColor(-1,"-2")
        $ftpPort = GUICtrlCreateInput("21",80,225,50,20, -1,$WS_EX_CLIENTEDGE)
        GUICtrlCreateUpdown(-1,-1)
        ; Button: FTP-Daten speichern
        $btnFtpSpeichern = GUICtrlCreateButton("Speichern",150,225,100,20,-1,-1)
    ; ENDE Gruppe FTP-Daten
    
    ; START Gruppe Optionen
    GUICtrlCreateGroup("Optionen",290,20,250,155,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
        ; CheckBox: Autostart aktivieren
        GUICtrlCreateCheckbox("Autostart aktivieren",310,50,210,20,-1,-1)
        ; CheckBox: Minimieren auf Taskleiste
        GUICtrlCreateCheckbox("nach Start auf Taskleiste minimieren",310,75,210,20,-1,-1)
        ; CheckBox: Mauszeiger ausblenden
        GUICtrlCreateCheckbox("Mauszeiger auf Screenshots ausblenden",310,100,210,20,-1,-1)
        ; Button: Test-Screenshot erstellen
        $btnScreenshotTest = GUICtrlCreateButton("Test-Screenshot erstellen und öffnen",310,130,210,20,-1,-1)
    ; ENDE Gruppe Optionen
    
    ; START Gruppe Status
    GUICtrlCreateGroup("Status",290,195,250,140,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
        ; Label: Programmstatus
        $lblProgrammStatus = GUICtrlCreateLabel("Aufnahme / Upload gestoppt",310,225,210,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
        GUICtrlSetBkColor(-1,"0xff6b6b")
        ; Label: Anzahl erstellter Screenshots
        $lblScreenshotZaehler = GUICtrlCreateLabel("Erstellte Screenshots:",310,255,210,15,-1,-1)
        GUICtrlSetBkColor(-1,"-2")
        ; Label: Zeit bis zum nächsten Screenshot
        GUICtrlCreateLabel("Nächster Screenshot in xx Sekunden",310,295,210,15,-1,-1)
        GUICtrlSetBkColor(-1,"-2")
        ; Label: Ausgewählter Intervall nach Programmstart
        $lblStatusIntervall = GUICtrlCreateLabel("Aufnahme / Upload-Intervall:",310,275,210,15,-1,-1)
        GUICtrlSetBkColor(-1,"-2")
    ; ENDE Gruppe Status
    
    ; START Gruppe Steuerung
    GUICtrlCreateGroup("Steuerung",20,290,250,120,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
        ; Label: Text Intervall
        GUICtrlCreateLabel("Intervall in Minuten:",40,315,100,20,$SS_CENTERIMAGE,-1)
        GUICtrlSetBkColor(-1,"-2")
        ; Input Up/Down: Intervall in Minuten
        $idStrgIntervallMinuten = GUICtrlCreateInput("1",150,315,50,20, -1,$WS_EX_CLIENTEDGE)
        GUICtrlCreateUpdown(-1,-1)
        ; Button: Programm starten
        $btnProgrammStarten = GUICtrlCreateButton("Programm starten",40,355,210,30,-1,-1)
        GUICtrlSetFont(-1,8,700,0,"MS Sans Serif")
        GUICtrlSetState(-1, $GUI_SHOW)
        ; Button: Programm stoppen
        $btnProgrammStoppen = GUICtrlCreateButton("Programm stoppen",40,355,210,30,-1,-1)
        GUICtrlSetFont(-1,8,700,0,"MS Sans Serif")
        GUICtrlSetState(-1, $GUI_HIDE)
    ; Ende Gruppe Steuerung
    
    ; Label: Programmname
    GUICtrlCreateLabel("ScreenHunter 2.0",290,355,250,30,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
    GUICtrlSetBkColor(-1,"-2")
    
    ; Variable für Screenshotaufnahme
    Global $erstelleScreenshot = _ScreenCapture_Capture("")
    
    ; Variable mit Pfad zum SH-Screenshots-Ordner
    Global $screenshotOrdnerPfad = @ScriptDir & "\SH-Screenshots"
    
    ; Variablen mit Pfaden zu den FTP-Daten
    Global $ftpDatenOrdnerPfad = @ScriptDir & "\FTP-Daten"
    Global $ftpDatenDateiPfad = $ftpDatenOrdnerPfad & "\ftp-daten.ini"
    
    ; Variable für Screenshotzähler
    Global $screenshotZaehler =  0
    
    ; Funktion ftp-daten.ini mit aktuellen FTP-Daten erstellen
    Func FtpIniErstellen()
        _FileCreate ($ftpDatenDateiPfad)
        IniWrite($ftpDatenDateiPfad, "FTP-Daten", "FTP-Hostname", GUICtrlRead($ftpHostname))
        IniWrite($ftpDatenDateiPfad, "FTP-Daten", "FTP-Login-Name", GUICtrlRead($ftpLoginName))
        IniWrite($ftpDatenDateiPfad, "FTP-Daten", "FTP-Passwort", GUICtrlRead($ftpPasswort))
        IniWrite($ftpDatenDateiPfad, "FTP-Daten", "FTP-Port", GUICtrlRead($ftpPort))
        MsgBox($MB_ICONINFORMATION, "FTP-Daten speichern", "Die FTP-Daten wurden unter " & @CRLF & @CRLF & $ftpDatenDateiPfad & @CRLF & @CRLF & " gespeichert!")
    EndFunc
    ; Ende FtpIniErstellen
    
    ; Funktion FTP-Daten speichern
    Func FtpDatenSpeichern()
        If FileExists($ftpDatenOrdnerPfad) Then
            If FileExists($ftpDatenDateiPfad) Then
                FileDelete($ftpDatenDateiPfad)
                FtpIniErstellen()
            Else
                FtpIniErstellen()
            EndIf
        Else 
            DirCreate($ftpDatenOrdnerPfad)
            FtpIniErstellen()
        EndIf
    EndFunc
    ; Ende FtpDatenSpeichern
    
    ; Funktion FTP-Verbindung aufbauen und Screenshot hochladen
    Func FtpVerbindung()
        Local $serverpfad = "screenshot.jpg"
    
        Local $ftpOeffnen = _FTP_Open('ScreenHunter 2.0 FTP-Session')
        Local $ftpVerbinden = _FTP_Connect($ftpOeffnen, GUICtrlRead($ftpHostname), GUICtrlRead($ftpLoginName), GUICtrlRead($ftpPasswort))
        If @error Then
            MsgBox($MB_ICONERROR, "FTP-Verbindung", "Es konnte keine Verbindung zum Server aufgebaut werden!")
        Else
           _FTP_FilePut($ftpVerbinden, @ScriptDir & "\SH-Screenshots\screenshot.jpg", $serverpfad)
        EndIf
        _FTP_Close($ftpOeffnen)
    EndFunc
    ; Ende FtpVerbindung
    
    ; Funktion HuntingTest - Erstellt Screenshot, speichert ihn ab und öffnet ihn
    Func HuntingTest()
        If FileExists($screenshotOrdnerPfad) Then
            ; Speichert das Bild
            _ScreenCapture_SaveImage("SH-Screenshots\screenshot.jpg", $erstelleScreenshot)
            ; Öffnet das Bild
            ShellExecute("SH-Screenshots\screenshot.jpg") 
        Else 
            DirCreate($screenshotOrdnerPfad)
            ; Speichert das Bild
            _ScreenCapture_SaveImage("SH-Screenshots\screenshot.jpg", $erstelleScreenshot)
            ; Öffnet das Bild
            ShellExecute("SH-Screenshots\screenshot.jpg") 
        EndIf
    EndFunc
    ; Ende HuntingTest
    
    ; Funktion HuntingStart - Erstellt nach einem Minutenintervall einen Screenshot und speichert ihn ab
    Func HuntingStart()
        AdlibUnRegister('HuntingStart')
        ; Speichert das Bild
        _ScreenCapture_SaveImage("SH-Screenshots\screenshot.jpg", $erstelleScreenshot)
        FtpVerbindung()
        $screenshotZaehler = $screenshotZaehler + 1
        GUICtrlSetState ($btnProgrammStarten, $GUI_HIDE)
        GUICtrlSetState ($btnProgrammStoppen, $GUI_SHOW)
        GUICtrlSetData ($lblProgrammStatus, "Aufnahme / Upload gestartet")
        GUICtrlSetBkColor($lblProgrammStatus, "0x51cf66")
        GUICtrlSetData ($lblScreenshotZaehler, "Erstellte Screenshots:" & GUICtrlRead($screenshotZaehler))
        GUICtrlSetData ($lblStatusIntervall, "Aufnahme / Upload-Intervall:" & GUICtrlRead($idStrgIntervallMinuten))
        AdlibRegister('HuntingStart', GUICtrlRead($idStrgIntervallMinuten)*60*1000)
    EndFunc
    ; Ende HuntingStart
    
    ; Funktion HuntingStopp - Stoppt die Aufnahme und den Upload
    Func HuntingStopp()
        GUICtrlSetState ($btnProgrammStarten, $GUI_SHOW)
        GUICtrlSetState ($btnProgrammStoppen, $GUI_HIDE)
        GUICtrlSetData ($lblProgrammStatus, "Aufnahme / Upload gestoppt")
        GUICtrlSetBkColor($lblProgrammStatus, "0xff6b6b")
        AdlibUnRegister('HuntingStart')
    EndFunc
    ; Ende HuntingStopp
    
    ; Liest ftp-daten.ini aus und schreibt Werte in die FTP-Daten Textfelder
    GUICtrlSetData ($ftpHostname, IniRead ($ftpDatenDateiPfad, "FTP-Daten", "FTP-Hostname", ""))
    GUICtrlSetData ($ftpLoginName, IniRead ($ftpDatenDateiPfad, "FTP-Daten", "FTP-Login-Name", ""))
    GUICtrlSetData ($ftpPasswort, IniRead ($ftpDatenDateiPfad, "FTP-Daten", "FTP-Passwort", ""))
    GUICtrlSetData ($ftpPort, IniRead ($ftpDatenDateiPfad, "FTP-Daten", "FTP-Port", "21"))
    
    ; Ereignisschleife
    Local $iMsg = 0
    
    While 1
        
        $iMsg = GUIGetMsg()
        
        Switch $iMsg
    
            ; Ablauf, nachdem das Programm per Button gestartet wurde
            Case $btnProgrammStarten
            If GUICtrlRead($idStrgIntervallMinuten) < 1 Then
                MsgBox($MB_ICONERROR, "Wert zu klein...", "Der Intervall in Minuten muss mindestens 1 Minute betragen")
                Break(1)
            Else
                HuntingStart()
            EndIf
            
            ; Ablauf, nachdem das Programm per Button gestoppt wurde
            Case $btnProgrammStoppen
            HuntingStopp()
    
            ; Ablauf, nachdem der Button Test-Screenshot gedrückt wurde
            Case $btnScreenshotTest
            HuntingTest()
            
            ; Ablauf, nachdem der Button speichern (Gruppe FTP-Daten) gedrückt wurde
            Case $btnFtpSpeichern
            FtpDatenSpeichern()
    
            Case $GUI_EVENT_CLOSE
            ExitLoop
    
        EndSwitch
        
    WEnd
    
    GUIDelete($ScreenHunter)
    Alles anzeigen
  • Include von .au3 Dateien in das GUI

    • elysium
    • 9. März 2020 um 09:05

    Vielen Dank für die Denkanstöße, dann werde ich danach mal in der Hilfe suchen und das durchlesen.

    Das mit der editierbaren .ini finde ich schon sehr toll und werde das auf jeden Fall dann so versuchen zu lösen, Danke dafür!

    Mit der ListView bin ich gestern überhaupt nicht warm geworden, weshalb ich mich dann auch für die Table UDF entschieden habe.

    Das schiebe ich aber mal auf mein fehlendes Wissen bezüglich der Handhabung.

    Wenn ihr das alle empfehlt, sollte ich es mir wohl nochmal genauer ansehen.

  • Include von .au3 Dateien in das GUI

    • elysium
    • 8. März 2020 um 18:54

    Hallo zusammen,

    ich habe vor einiger Zeit ein Portal für unsere Firma geschrieben, in welchem jede unserer Maschinen aufgelistet sind, mit einer Tabelle der Maschinendaten und pro Maschine zwischen 5-20 Buttons, welche jeweils mit einer PDF verknüpft ist, z.B. Betriebsanleitung, Ersatzteileliste etc..

    Dieses Portal wurde mit HTML / CSS und ein klein wenig JavaScript umgesetzt und ist komplett statisch.

    Mir fehlt hier auch die Möglichkeit an Funktionalität, da ich z.B. keinen PHP Interpreter installieren darf, weshalb ich gerne beginnen möchte das ganze mit AutoIt zu realisieren.

    Auch weil ich ein Projekt brauche, das mit der Zeit wächst und ich dadurch eventuell AutoIt lernen kann.

    Nun habe ich ein GUI gebaut, welches wie eine Website aufgebaut ist.

    Ich habe links eine Navigation mit 40 Buttons, je 1 Button für eine Maschine und habe dann rechts einen Inhaltsbereich in Form einer GroupBox.

    Für jede Maschine, möchte ich nun eine eigene .au3 Datei haben, welche beim klicken des jeweiligen Maschinenbuttons in den Inhaltsbereich geladen wird.

    Aktuell habe ich das auch schon mit 2 Buttons und 2 Tabellen umgesetzt.

    Wenn ich Button 1 klicke, lädt es die Tabelle, die Freude war groß, wenn ich dann Button 2 klicke, legt es die 2. Tabelle über die erste. :(

    Daher habe ich jetzt mal gestoppt, wenn ich so weiter mache, würden sich später alle Dateien übereinander legen.

    Ich möchte gerne, dass die alte Datei mit der neuen ersetzt wird, bzw. ich muss den Inhaltsbereich irgendwie wieder leeren, bevor ich eine neue Datei hinein lade.

    Könntet ihr mir eventuell sagen, wie ihr sowas generell angehen würdet?

    Mache mir bisschen Sorgen, das ich mich sonst total verbaue, weil man das so gar nicht tun würde.

    Weiß auch noch gar nicht, ob das mit dem kompilieren funktioniert, wie ich mir das vorstelle.

    Das wären dann ja die Haupt-GUI Datei und 42 einzelne .au3 Dateien, welche dann später auf einem Rechner laufen müssten, auf dem kein AutoIt installiert ist. :/

    Anbei noch mein bisheriges Werk:

    Haupt-GUI Datei
    C
    ;*****************************************
    ;Maschinenportal.au3 by DS
    ;Erstellt mit ISN AutoIt Studio v. 1.10
    ;*****************************************
    
    #include <GUIConstantsEx.au3>
    #include <MsgBoxConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <Table.au3>
    
    ;----- Erstellt GUI -----
    Local $hGUI = GUICreate("Maschinenportal", 1000, 600)
    
        ;----- Erstellt Gruppe DE inklusive der einzelnen Maschinen-Buttons -----
        GUICtrlCreateGroup("SGM DE",10,10,90,580,$BS_CENTER,-1)
            GUICtrlSetBkColor(-1,"0xF0F0F0")
            $btn01 = GUICtrlCreateButton("01",20,30,30,30,-1,-1)
                GUICtrlSetTip( $btn01, "Maschinenbezeichnung")
            $btn02 = GUICtrlCreateButton("02",60,30,30,30,-1,-1)
                GUICtrlSetTip( $btn02, "Maschinenbezeichnung")
            $btn03 = GUICtrlCreateButton("03",20,70,30,30,-1,-1)
                GUICtrlSetTip( $btn03, "Maschinenbezeichnung")
            $btn04 = GUICtrlCreateButton("04",60,70,30,30,-1,-1)
                GUICtrlSetTip( $btn04, "Maschinenbezeichnung")
            $btn05 = GUICtrlCreateButton("05",20,110,30,30,-1,-1)
                GUICtrlSetTip( $btn05, "Maschinenbezeichnung")
            $btn06 = GUICtrlCreateButton("06",60,110,30,30,-1,-1)
                GUICtrlSetTip( $btn06, "Maschinenbezeichnung")
            $btn07 = GUICtrlCreateButton("07",20,150,30,30,-1,-1)
                GUICtrlSetTip( $btn07, "Maschinenbezeichnung")
            $btn08 = GUICtrlCreateButton("08",60,150,30,30,-1,-1)
                GUICtrlSetTip( $btn08, "Maschinenbezeichnung")    
            $btn09 = GUICtrlCreateButton("09",20,190,30,30,-1,-1)
                GUICtrlSetTip( $btn09, "Maschinenbezeichnung")
            $btn10 = GUICtrlCreateButton("10",60,190,30,30,-1,-1)
                GUICtrlSetTip( $btn10, "Maschinenbezeichnung")    
            $btn11 = GUICtrlCreateButton("11",20,230,30,30,-1,-1)
                GUICtrlSetTip( $btn11, "Maschinenbezeichnung")
            $btn12 = GUICtrlCreateButton("12",60,230,30,30,-1,-1)
                GUICtrlSetTip( $btn12, "Maschinenbezeichnung")
            $btn13 = GUICtrlCreateButton("13",20,270,30,30,-1,-1)
                GUICtrlSetTip( $btn13, "Maschinenbezeichnung")
            $btn14 = GUICtrlCreateButton("14",60,270,30,30,-1,-1)
                GUICtrlSetTip( $btn14, "Maschinenbezeichnung")
            $btn15 = GUICtrlCreateButton("15",20,310,30,30,-1,-1)
                GUICtrlSetTip( $btn15, "Maschinenbezeichnung")
            $btn16 = GUICtrlCreateButton("16",60,310,30,30,-1,-1)
                GUICtrlSetTip( $btn16, "Maschinenbezeichnung")
            $btn17 = GUICtrlCreateButton("17",20,350,30,30,-1,-1)
                GUICtrlSetTip( $btn17, "Maschinenbezeichnung")
            $btn18 = GUICtrlCreateButton("18",60,350,30,30,-1,-1)
                GUICtrlSetTip( $btn18, "Maschinenbezeichnung")
            $btn19 = GUICtrlCreateButton("19",20,390,30,30,-1,-1)
                GUICtrlSetTip( $btn19, "Maschinenbezeichnung")
            $btn20 = GUICtrlCreateButton("20",60,390,30,30,-1,-1)
                GUICtrlSetTip( $btn20, "Maschinenbezeichnung")    
                
        ;----- Erstellt Gruppe SK inklusive der einzelnen Maschinen-Buttons -----
        GUICtrlCreateGroup("SGM SK",110,10,90,580,$BS_CENTER,-1)
            GUICtrlSetBkColor(-1,"0xF0F0F0")
            $btn01 = GUICtrlCreateButton("01",120,30,30,30,-1,-1)
                GUICtrlSetTip( $btn01, "Maschinenbezeichnung")
            $btn02 = GUICtrlCreateButton("02",160,30,30,30,-1,-1)
                GUICtrlSetTip( $btn02, "Maschinenbezeichnung")
            $btn03 = GUICtrlCreateButton("03",120,70,30,30,-1,-1)
                GUICtrlSetTip( $btn03, "Maschinenbezeichnung")
            $btn04 = GUICtrlCreateButton("04",160,70,30,30,-1,-1)
                GUICtrlSetTip( $btn04, "Maschinenbezeichnung")
            $btn05 = GUICtrlCreateButton("05",120,110,30,30,-1,-1)
                GUICtrlSetTip( $btn05, "Maschinenbezeichnung")
            $btn06 = GUICtrlCreateButton("06",160,110,30,30,-1,-1)
                GUICtrlSetTip( $btn06, "Maschinenbezeichnung")
            $btn07 = GUICtrlCreateButton("07",120,150,30,30,-1,-1)
                GUICtrlSetTip( $btn07, "Maschinenbezeichnung")
            $btn08 = GUICtrlCreateButton("08",160,150,30,30,-1,-1)
                GUICtrlSetTip( $btn08, "Maschinenbezeichnung")    
            $btn09 = GUICtrlCreateButton("09",120,190,30,30,-1,-1)
                GUICtrlSetTip( $btn09, "Maschinenbezeichnung")
            $btn10 = GUICtrlCreateButton("10",160,190,30,30,-1,-1)
                GUICtrlSetTip( $btn10, "Maschinenbezeichnung")    
            $btn11 = GUICtrlCreateButton("11",120,230,30,30,-1,-1)
                GUICtrlSetTip( $btn11, "Maschinenbezeichnung")
            $btn12 = GUICtrlCreateButton("12",160,230,30,30,-1,-1)
                GUICtrlSetTip( $btn12, "Maschinenbezeichnung")
            $btn13 = GUICtrlCreateButton("13",120,270,30,30,-1,-1)
                GUICtrlSetTip( $btn13, "Maschinenbezeichnung")
            $btn14 = GUICtrlCreateButton("14",160,270,30,30,-1,-1)
                GUICtrlSetTip( $btn14, "Maschinenbezeichnung")
            $btn15 = GUICtrlCreateButton("15",120,310,30,30,-1,-1)
                GUICtrlSetTip( $btn15, "Maschinenbezeichnung")
            $btn16 = GUICtrlCreateButton("16",160,310,30,30,-1,-1)
                GUICtrlSetTip( $btn16, "Maschinenbezeichnung")
            $btn17 = GUICtrlCreateButton("17",120,350,30,30,-1,-1)
                GUICtrlSetTip( $btn17, "Maschinenbezeichnung")
            $btn18 = GUICtrlCreateButton("18",160,350,30,30,-1,-1)
                GUICtrlSetTip( $btn18, "Maschinenbezeichnung")
            $btn19 = GUICtrlCreateButton("19",120,390,30,30,-1,-1)
                GUICtrlSetTip( $btn19, "Maschinenbezeichnung")
            $btn20 = GUICtrlCreateButton("20",160,390,30,30,-1,-1)
                GUICtrlSetTip( $btn20, "Maschinenbezeichnung")    
                
        ;----- Erstellt Button Gesamtübersicht DE mit ToolTip -----
        $btnGesamtDE = GUICtrlCreateButton("Gesamtübersicht SGM-Grunddaten Deutschland",210,10,385,30,-1,-1)
            GUICtrlSetTip( $btnGesamtDE, "Tabellarische Gesamtübersicht der Maschinen-Grunddaten in Deutschland")
            
        ;----- Erstellt Button Gesamtübersicht SK mit ToolTip -----
        $btnGesamtSK = GUICtrlCreateButton("Gesamtübersicht SGM-Grunddaten Slowakei",605,10,385,30,-1,-1)
            GUICtrlSetTip( $btnGesamtSK, "Tabellarische Gesamtübersicht der Maschinen-Grunddaten in der Slowakei")
        
        ;----- Erstellt Gruppe für die Inhalte -----    
        GUICtrlCreateGroup("Inhalt",210,50,780,540,-1,-1)
            GUICtrlSetBkColor(-1,"0xF0F0F0")
    
    ;----- Macht GUI sichtbar -----
    GUISetState(@SW_SHOW, $hGUI)
    
    ;----- GUI Ereignisschleife -----
    Local $iMsg = 0
    While 1
        $iMsg = GUIGetMsg()
        Switch $iMsg
            ;----- Lädt die Datei gesamt_tabelle_de.au3 in den Inhaltsbereich -----
            Case $btnGesamtDE
                #include "inc\gesamt_tabelle_de.au3"
            
            ;----- Lädt die Datei gesamt_tabelle_sk.au3 in den Inhaltsbereich -----    
            Case $btnGesamtSK
                #include "inc\gesamt_tabelle_sk.au3"
            
            ;----- Beendet nach einem Hinweis das Programm -----    
            Case $GUI_EVENT_CLOSE
                MsgBox($MB_SYSTEMMODAL, "GUI Event", "Du hast auf CLOSE geklickt. Programm wird beendet...")
                ExitLoop
                
        EndSwitch
    WEnd
    
    GUIDelete($hGUI) 
    Alles anzeigen
    Tabelle 1
    Code
    ;gesamt_tabelle_de.au3
    
    #include-once
    
    ;----- Sperrt GUI (wird benötigt solange die Tabellen gezeichnet werden) -----
    GUISetState(@SW_LOCK)
    
        ;----- Erstellt Tabelle -----
        $GesamtTabelleDE = _GUICtrlTable_Create(220, 70, 62, 20, 21, 6, 0)
        _GUICtrlTable_Set_RowHeight($GesamtTabelleDE, 1, 35)
        _GUICtrlTable_Set_ColumnWidth($GesamtTabelleDE, 1, 50)
        _GUICtrlTable_Set_ColumnWidth($GesamtTabelleDE, 2, 142)
        _GUICtrlTable_Set_ColumnWidth($GesamtTabelleDE, 3, 142)
        _GUICtrlTable_Set_ColumnWidth($GesamtTabelleDE, 4, 142)
        _GUICtrlTable_Set_ColumnWidth($GesamtTabelleDE, 5, 142)
        _GUICtrlTable_Set_ColumnWidth($GesamtTabelleDE, 6, 142)
        _GUICtrlTable_Set_Justify_All($GesamtTabelleDE, 1, 1)
        _GUICtrlTable_Set_TextFont_All($GesamtTabelleDE, 8.5, 800, 0, "Tahoma")
        _GUICtrlTable_Set_CellColor_Row($GesamtTabelleDE, 1, 0x555555)
        _GUICtrlTable_Set_TextColor_All($GesamtTabelleDE, 0x555555)
        _GUICtrlTable_Set_TextColor_Row($GesamtTabelleDE, 1, 0xFFFFFF)
        For $row = 3 To 21 Step 2
            _GUICtrlTable_Set_CellColor_Row($GesamtTabelleDE, $row, 0xF0F0F0)
        Next
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 1, "SGM|Hersteller|Bezeichnung|Seriennummer|Baujahr|Zuhaltung")
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 2, "01|NA|NA|NA|NA|NA") ;SGM 01
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 3, "02|NA|NA|NA|NA|NA") ;SGM 02
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 4, "03|NA|NA|NA|NA|NA") ;SGM 03
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 5, "04|NA|NA|NA|NA|NA") ;SGM 04
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 6, "05|NA|NA|NA|NA|NA") ;SGM 05
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 7, "06|NA|NA|NA|NA|NA") ;SGM 06
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 8, "07|NA|NA|NA|NA|NA") ;SGM 07
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 9, "08|NA|NA|NA|NA|NA") ;SGM 08
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 10, "09|NA|NA|NA|NA|NA") ;SGM 09
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 11, "10|NA|NA|NA|NA|NA") ;SGM 10
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 12, "11|NA|NA|NA|NA|NA") ;SGM 11
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 13, "12|NA|NA|NA|NA|NA") ;SGM 12
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 14, "13|NA|NA|NA|NA|NA") ;SGM 13
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 15, "14|NA|NA|NA|NA|NA") ;SGM 14
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 16, "15|NA|NA|NA|NA|NA") ;SGM 15
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 17, "16|NA|NA|NA|NA|NA") ;SGM 16
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 18, "17|NA|NA|NA|NA|NA") ;SGM 17
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 19, "18|NA|NA|NA|NA|NA") ;SGM 18
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 20, "19|NA|NA|NA|NA|NA") ;SGM 19
        _GUICtrlTable_Set_Text_Row($GesamtTabelleDE, 21, "20|NA|NA|NA|NA|NA") ;SGM 20
        _GUICtrlTable_Set_Border_Table($GesamtTabelleDE, 0x555555)
        
    ;----- Entsperrt GUI (nachdem die Tabellen gezeichnet wurden) -----
    GUISetState(@SW_UNLOCK)
    Alles anzeigen
    Tabelle 2
    Code
    ;gesamt_tabelle_sk.au3
    
    #include-once
    
    ;----- Sperrt GUI (wird benötigt solange die Tabellen gezeichnet werden) -----
    GUISetState(@SW_LOCK)
    
        ;----- Erstellt Tabelle -----
        $Table4 = _GUICtrlTable_Create(35, 268, 62, 18, 8, 6, 0)
        _GUICtrlTable_Set_RowHeight($Table4, 1, 35)
        _GUICtrlTable_Set_Justify_All($Table4, 1, 1)
        _GUICtrlTable_Set_TextFont_All($Table4, 8.5, 800, 0, "Tahoma")
        _GUICtrlTable_Set_CellColor_Row($Table4, 1, 0x555555)
        _GUICtrlTable_Set_TextColor_All($Table4, 0x555555)
        _GUICtrlTable_Set_TextColor_Row($Table4, 1, 0xFFFFFF)
        For $row = 3 To 10 Step 2
            _GUICtrlTable_Set_CellColor_Row($Table4, $row, 0xDDDDDD)
        Next
        _GUICtrlTable_Set_Text_Row($Table4, 1, "Fixing|Size|Weight|Net|Gross|Order")
        _GUICtrlTable_Set_Text_Row($Table4, 2, "Block|20.0|0.01|300|340|No")
        _GUICtrlTable_Set_Text_Row($Table4, 3, "Screw|8.5|0.3|50|100|No")
        _GUICtrlTable_Set_Text_Row($Table4, 4, "Rivet|0.1|0.4|10|11|Yes")
        _GUICtrlTable_Set_Text_Row($Table4, 5, "Rope|300.0|100.0|2|10|No")
        _GUICtrlTable_Set_Text_Row($Table4, 6, "Tack|10.6|0.3|1000|1011|Yes")
        _GUICtrlTable_Set_Text_Row($Table4, 7, "Nail|30.3|0.4|400|600|No")
        _GUICtrlTable_Set_Text_Row($Table4, 8, "Staple|0.3|0.05|10000|12000|No")
        _GUICtrlTable_Set_Border_Table($Table4, 0x555555)
        
    ;----- Entsperrt GUI (nachdem die Tabellen gezeichnet wurden) -----
    GUISetState(@SW_UNLOCK)
    Alles anzeigen
  • GUI reagiert nicht auf Buttons evt. wegen Schleife oder Sleep?

    • elysium
    • 27. Februar 2020 um 08:27

    Hallo autoBert,

    vielen Dank für das drüber schauen, war die letzten Tage krank, daher die späte Antwort.

    Werde versuchen das noch umzusetzen und bin froh, dass es so wenig ist :)

  • GUI reagiert nicht auf Buttons evt. wegen Schleife oder Sleep?

    • elysium
    • 21. Februar 2020 um 11:11

    Ok, Sorry für den Doppelpost aber ich glaube, dass ich jetzt fertig wäre mit meinem kleinen Tool.

    Könntet ihr euch eventuell kurz anschauen ob ihr einen groben Fehler findet?

    Besonders würde mich interessieren, ob die Art und Weise, wie ich das Script stoppe, über den "Programm beenden" Button, so richtig ist.

    Habe da mehre Dinge versucht um die Hunting-Funktion zu stoppen, welche alle nicht richtig funktioniert haben.

    Die Lösung jetzt, stoppt zumindest die Screenshot-Erstellung, weiß nur nicht, ob der gewählte Weg auch "gut" ist.

    Spoiler anzeigen
    C
    ;*****************************************
    ;ScreenHunter.au3 by DS
    ;Erstellt mit ISN AutoIt Studio v. 1.10
    ;*****************************************
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <ButtonConstants.au3>
    #include <ScreenCapture.au3>
    
    ; Erstellt GUI
    $ScreenHunter = GUICreate("ScreenHunter",320,375,-1,-1,-1,-1)
        GUISetBkColor(0xFFFFFF,$ScreenHunter)
        GUISetState(@SW_SHOW, $ScreenHunter)
    
    ; Bild Logo
    Local $idLogo = GUICtrlCreatePic("Images\logo.jpg", 85, 25, 150, 41)
    
    ; Erstellt Label für Text Input-Feld
    GUICtrlCreateLabel("Intervall in Minuten:",10,151, 100, 20)
        GUICtrlSetBkColor(-1,"-2")
    ; Erstellt Input-Feld
    Local $idInput = GUICtrlCreateInput("2", 110, 147, 50, 20)
        GUICtrlCreateUpdown($idInput)
    
    ; Erstellt Buttons
    $BtnScreenshotTest = GUICtrlCreateButton("Screenshot Test",10,91,300,31,-1,-1)
    $BtnProgrammStarten = GUICtrlCreateButton("Programm starten",10,192,300,31,-1,-1)
    $BtnProgrammBeenden = GUICtrlCreateButton("Programm beenden",10,233,300,31,-1,-1)
    
    ; Statusgrafiken: grün=Programm läuft rot=Programm steht
    Local $idRun = GUICtrlCreatePic("Images\run.jpg", 10, 274, 300, 31)
        GUICtrlSetState ($idRun, $GUI_HIDE)
    Local $idStop = GUICtrlCreatePic("Images\stop.jpg", 10, 274, 300, 31)
    ; Erstellt Labels für Statusgrafiken
    $lblRun = GUICtrlCreateLabel("",10,315,300,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
        GUICtrlSetState ($lblRun, $GUI_HIDE)
    $lblStop = GUICtrlCreateLabel("Programm gestoppt",10,315,300,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
    
    ; Erstellt Label für Text unten
    GUICtrlCreateLabel("ScreenHunter v1.0",10,350,300,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
    
    ; Funktion HuntingTest - Erstellt Screenshot, speichert ihn ab und öffnet ihn
    Func HuntingTest()
        Local $hBmp
    
        ; Erstellt Screenshot - kompletter Bildschirm
        $hBmp = _ScreenCapture_Capture("")
    
        ; Speichert das Bild
        _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
    
        ; Öffnet das Bild
        ShellExecute(@MyDocumentsDir & "\screenshot.jpg") 
    EndFunc   ;==>EndeHuntingTest
    
    ; Funktion Hunting - Erstellt alle 5 Minuten einen Screenshot und speichert ihn ab
    Func Hunting()
        GUICtrlSetState ($idStop, $GUI_HIDE)
        GUICtrlSetState ($lblStop, $GUI_HIDE)
        GUICtrlSetState ($idRun, $GUI_SHOW)
        GUICtrlSetState ($lblRun, $GUI_SHOW)
        AdlibUnRegister('Hunting')
            ; Erstellt Screenshot - kompletter Bildschirm
            $hBmp = _ScreenCapture_Capture("")
    
            ; Speichert das Bild
            _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
        AdlibRegister('Hunting', GUICtrlRead($idInput)*60*1000)
    EndFunc   ;==>EndeHunting
    
    ; Ereignisschleife
    Local $iMsg = 0
    While 1
        $iMsg = GUIGetMsg()
        Switch $iMsg
            Case $BtnProgrammStarten
                If GUICtrlRead($idInput) < 1 Then
                    MsgBox($MB_ICONERROR, "Wert zu klein...", "Der Intervall in Minuten muss mindestens 1 Minute betragen")
                    Break(1)
                Else
                    GUICtrlSetData ($lblRun, "Programm gestartet - Intervall: " & GUICtrlRead($idInput) & " Minute/n")
                    Hunting()
                EndIf
            
            Case $BtnScreenshotTest
                HuntingTest()
                
            Case $BtnProgrammBeenden
                GUICtrlSetState ($idStop, $GUI_SHOW)
                GUICtrlSetState ($lblStop, $GUI_SHOW)
                GUICtrlSetState ($idRun, $GUI_HIDE)
                GUICtrlSetState ($lblRun, $GUI_HIDE)
                AdlibUnRegister('Hunting')
    
            Case $GUI_EVENT_CLOSE
                ExitLoop
        EndSwitch
    WEnd
    
    GUIDelete($ScreenHunter)
    Alles anzeigen
  • GUI reagiert nicht auf Buttons evt. wegen Schleife oder Sleep?

    • elysium
    • 21. Februar 2020 um 09:43

    Hallo zusammen, vielen Dank und Sorry für die späte Antwort, hat etwas gedauert mit der Umsetzung.

    Ich habe jetzt alles wieder umgeschrieben, auf die ursprüngliche Variante, damit komme ich irgendwie besser klar und habe dann die Adlib-Lösung genommen.

    Soweit ich das bisher testen konnte, funktioniert alles wie gewünscht und ich bastel jetzt noch an Kleinigkeiten rum.

    Hab den Intervall nun über das GUI veränderbar gemacht und eine Programm-Status Anzeige mit rein gebaut.

    Nur eine Kleinigkeit stört mich noch :|

    Ich habe für das Input Control eine Abfrage drin, dass wenn der Wert kleiner 1 ist, eine MsgBox aufgeht, welche den User darauf hinweist, dass der Wert mindestens 1 Minute sein muss.

    Wie kann ich den Benutzer, wenn der Wert kleiner 1 ist, dann wieder aus der Funktion befördern, in welcher die Abfrage stattfindet?

    Aktuell mache ich das über ExitLoop, allerdings schließt sich dann das gesamte GUI.

    Spoiler anzeigen
    C
    ;*****************************************
    ;ScreenHunter.au3 by DS
    ;Erstellt mit ISN AutoIt Studio v. 1.10
    ;*****************************************
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <ButtonConstants.au3>
    #include <ScreenCapture.au3>
    
    ; Erstellt GUI
    $ScreenHunter = GUICreate("ScreenHunter",320,375,-1,-1,-1,-1)
        GUISetBkColor(0xFFFFFF,$ScreenHunter)
        GUISetState(@SW_SHOW, $ScreenHunter)
    
    ; Bild Logo
    Local $idLogo = GUICtrlCreatePic("Images\logo.jpg", 85, 25, 150, 41)
    
    ; Erstellt Label für Text Input-Feld
    GUICtrlCreateLabel("Intervall in Minuten:",10,151, 100, 20)
        GUICtrlSetBkColor(-1,"-2")
    ; Erstellt Input-Feld
    Local $idInput = GUICtrlCreateInput("2", 110, 147, 50, 20)
        GUICtrlCreateUpdown($idInput)
    
    ; Erstellt Buttons
    $BtnScreenshotTest = GUICtrlCreateButton("Screenshot Test",10,91,300,31,-1,-1)
    $BtnProgrammStarten = GUICtrlCreateButton("Programm starten",10,192,300,31,-1,-1)
    $BtnProgrammBeenden = GUICtrlCreateButton("Programm beenden",10,233,300,31,-1,-1)
    
    ; Statusgrafiken: grün=Programm läuft rot=Programm steht
    Local $idRun = GUICtrlCreatePic("Images\run.jpg", 10, 274, 300, 31)
        GUICtrlSetState ($idRun, $GUI_HIDE)
    Local $idStop = GUICtrlCreatePic("Images\stop.jpg", 10, 274, 300, 31)
    ; Erstellt Labels für Statusgrafiken
    $lblRun = GUICtrlCreateLabel("Programm gestartet - Intervall: " & GUICtrlRead($idInput) & " Minuten",10,315,290,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
        GUICtrlSetState ($lblRun, $GUI_HIDE)
    $lblStop = GUICtrlCreateLabel("Programm gestoppt",10,315,290,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
    
    ; Erstellt Label für Text unten
    GUICtrlCreateLabel("ScreenHunter v1.0",10,350,290,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
    
    ; Funktion HuntingTest - Erstellt Screenshot, speichert ihn ab und öffnet ihn
    Func HuntingTest()
        Local $hBmp
    
        ; Erstellt Screenshot - kompletter Bildschirm
        $hBmp = _ScreenCapture_Capture("")
    
        ; Speichert das Bild
        _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
    
        ; Öffnet das Bild
        ShellExecute(@MyDocumentsDir & "\screenshot.jpg") 
    EndFunc   ;==>EndeHuntingTest
    
    ; Funktion Hunting - Erstellt alle 5 Minuten einen Screenshot und speichert ihn ab
    Func Hunting()
        GUICtrlSetState ($idStop, $GUI_HIDE)
        GUICtrlSetState ($lblStop, $GUI_HIDE)
        GUICtrlSetState ($idRun, $GUI_SHOW)
        GUICtrlSetState ($lblRun, $GUI_SHOW)
        AdlibUnRegister('Hunting')
            ; Erstellt Screenshot - kompletter Bildschirm
            $hBmp = _ScreenCapture_Capture("")
    
            ; Speichert das Bild
            _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
        AdlibRegister('Hunting', GUICtrlRead($idInput)*60*1000)
    EndFunc   ;==>EndeHunting
    
    ; Ereignisschleife
    Local $iMsg = 0
    While 1
        $iMsg = GUIGetMsg()
        Switch $iMsg
            Case $BtnProgrammStarten
                If GUICtrlRead($idInput) < 1 Then
                    MsgBox($MB_SYSTEMMODAL, "Wert zu klein", "Der Intervall in Minuten muss mindestens 1 Minute betragen")
                    ExitLoop
                EndIf
                MsgBox($MB_SYSTEMMODAL, "Programm wurde gestartet...", "Programm speichert alle" & GUICtrlRead($idInput) & " Minuten einen Screenshot")
                Hunting()
            
            Case $BtnScreenshotTest
                HuntingTest()
                
            Case $BtnProgrammBeenden
                MsgBox($MB_SYSTEMMODAL, "Programm wird beendet", "Programm wird beendet, es werden keine Screenshots mehr gespeichert")
                ExitLoop
    
            Case $GUI_EVENT_CLOSE
                MsgBox($MB_SYSTEMMODAL, "Programm wird beendet", "Programm wird beendet, es werden keine Screenshots mehr gespeichert")
                ExitLoop
        EndSwitch
    WEnd
    
    GUIDelete($ScreenHunter)
    Alles anzeigen

    Edit:

    Ich glaub ich habe es geschafft, es tut zumindest das was ich möchte, ob es der richtige Weg ist, keine Ahnung :)

    Spoiler anzeigen
    Code
                If GUICtrlRead($idInput) < 1 Then
                    MsgBox($MB_ICONERROR, "Wert zu klein...", "Der Intervall in Minuten muss mindestens 1 Minute betragen")
                    Break(1)
                Else
                    MsgBox($MB_ICONINFORMATION, "Programm wurde gestartet...", "Programm speichert alle" & GUICtrlRead($idInput) & " Minuten einen Screenshot")
                    Hunting()
                EndIf
  • GUI reagiert nicht auf Buttons evt. wegen Schleife oder Sleep?

    • elysium
    • 20. Februar 2020 um 14:51

    Hallo alpines,

    vielen Dank für die Hilfe, habe das jetzt versucht so umzuschreiben, leider blockiert es mich immer noch, sobald ich die 5 Minuten-Schleife aufrufe.

    Spoiler anzeigen
    C
    ;*****************************************
    ;ScreenHunter.au3 by DS
    ;Erstellt mit ISN AutoIt Studio v. 1.10
    ;*****************************************
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <ButtonConstants.au3>
    #include <ScreenCapture.au3>
    #include <MsgBoxConstants.au3>
    
    ; Wechsle in den OnEvent Modus
    Opt("GUIOnEventMode", 1)
    
    ; Erstelle GUI
    $ScreenHunter = GUICreate("ScreenHunter",320,500,-1,-1,-1,-1)
        GUISetBkColor(0xFFFFFF,$ScreenHunter)
        GUISetState(@SW_SHOW, $ScreenHunter)
        
    ; Event zum schließen der GUI über X
    GUISetOnEvent($GUI_EVENT_CLOSE, "ProgrammEnde")
    
    ; Logo
    Local $idLogo = GUICtrlCreatePic("Images\logo.jpg", 10, 10, 297, 81)
    
    ; Button mit Event für den Test-Screenshot
    $BtnScreenshotTest = GUICtrlCreateButton("Screenshot Test",10,101,300,31,-1,-1)
        GUICtrlSetOnEvent($BtnScreenshotTest, "HuntingTest")
        
    ; Button mit Event für die Scrrenshot-Schleife
    $BtnProgrammStarten = GUICtrlCreateButton("Programm starten",10,141,300,31,-1,-1)
        GUICtrlSetOnEvent($BtnProgrammStarten, "Hunting")
    
    ; Statusgrafiken grün=Programm läuft rot=Programm steht
    Local $idRun = GUICtrlCreatePic("Images\run.jpg", 10, 181, 300, 40)
        GUICtrlSetState ($idRun, $GUI_HIDE)
    Local $idStop = GUICtrlCreatePic("Images\stop.jpg", 10, 181, 300, 40)
    
    ; Text unten in der GUI
    GUICtrlCreateLabel("ScreenHunter v1.0",10,423,300,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
    
    ; Endlosschleife um die GUI sichtbar zu machen
    While 1
        Sleep(100)
    WEnd
    
    ; Funktion HuntingTest - Erstellt Screenshot, speichert ihn ab und öffnet ihn
    Func HuntingTest()
        MsgBox($MB_SYSTEMMODAL, "Test-Screenshot...", "Das Programm speichert und öffnet einmalig einen Test-Screenshot")
        Local $hBmp
    
        ; Erstellt Screenshot - kompletter Bildschirm
        $hBmp = _ScreenCapture_Capture("")
    
        ; Speichert das Bild
        _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
    
        ; Öffnet das Bild
        ShellExecute(@MyDocumentsDir & "\screenshot.jpg")    
    EndFunc    ;==>EndeHuntingTest
    
    ; Funktion Hunting - Erstellt alle 5 Minuten einen Screenshot und speichert ihn ab
    Func Hunting()
        MsgBox($MB_SYSTEMMODAL, "Programm wird gestartet...", "Das Programm wird gestartet und speichert alle 5 Minuten einen Screenshot ab")
        GUICtrlSetState ($idStop, $GUI_HIDE)
        GUICtrlSetState ($idRun, $GUI_SHOW)
        While 1
            Sleep(300000)
            Local $hBmp
            
            ; Erstellt Screenshot - kompletter Bildschirm
            $hBmp = _ScreenCapture_Capture("")
    
            ; Speichert das Bild
            _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
            
        WEnd 
    EndFunc    ;==>EndeHunting
    
    ; Funktion ProgrammEnde - Beendet das Programm
    Func ProgrammEnde()
        If @GUI_WinHandle = $ScreenHunter Then 
            MsgBox($MB_SYSTEMMODAL, "Programm wird beendet...", "Das Programm wird beendet und es werden keine Screenshots mehr abgespeichert")
            Exit
        EndIf 
    EndFunc    ;==>EndeProgrammEnde
    Alles anzeigen

    Könntest Du mich eventuell nochmals in die richtige Richtung schubsen?

    Edit: Gerade erst die Antwort von autoBert gesehen, das muss ich erst noch probieren, Danke

  • GUI reagiert nicht auf Buttons evt. wegen Schleife oder Sleep?

    • elysium
    • 20. Februar 2020 um 12:34

    Guten Tag zusammen,

    ich bin gerade dabei ein kleinen Tool zu bauen, welches alle 5 Minuten einen Screenshot macht und abspeichert.

    Das ganze funktioniert auch prächtig, vielen Dank an alle die an der deutschen Hilfedatei mithelfen <3

    Wenn ich nun aber das Programm über den Button "Programm starten" starte, reagiert er nicht mehr auf die anderen GUI Inhalte, z.B. zum beenden.

    Ich vermute, das hängt mit der Schleife oder eher dem Sleep zusammen.

    Habe dann auch mal versucht, in die Schleife eine Abfrage zu nehmen, ob einer der Buttons geklickt wurde, das hat auch nicht fuktioniert.

    Wie könnte ich das mit der 5 Minuten-Schleife den ohne das Sleep lösen?

    Mein bisheriger Quellcode
    C
    ;*****************************************
    ;ScreenHunter.au3 by DS
    ;Erstellt mit ISN AutoIt Studio v. 1.10
    ;*****************************************
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <ButtonConstants.au3>
    #include <ScreenCapture.au3>
    
    $ScreenHunter = GUICreate("ScreenHunter",300,500,-1,-1,-1,-1)
        GUISetBkColor(0xFFFFFF,$ScreenHunter)
        GUISetState(@SW_SHOW, $ScreenHunter)
        
        
    $BtnScreenshotTest = GUICtrlCreateButton("Screenshot Test",10,60,280,31,-1,-1)
    $BtnProgrammStarten = GUICtrlCreateButton("Programm starten",10,100,280,31,-1,-1)
    $BtnProgrammBeenden = GUICtrlCreateButton("Programm beenden",10,140,280,31,-1,-1)
    
    
    
    GUICtrlCreateLabel("ScreenHunter v1.0",10,423,280,15,$SS_CENTER,-1)
        GUICtrlSetBkColor(-1,"-2")
    
    
    ; Funktion HuntingTest - Erstellt Screenshot, speichert ihn ab und öffnet ihn
    Func HuntingTest()
        Local $hBmp
    
        ; Erstellt Screenshot - kompletter Bildschirm
        $hBmp = _ScreenCapture_Capture("")
    
        ; Speichert das Bild
        _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
    
        ; Öffnet das Bild
        ShellExecute(@MyDocumentsDir & "\screenshot.jpg")
        
    EndFunc   ;==>EndeHuntingTest
    
    ; Funktion Hunting - Erstellt alle 5 Minuten einen Screenshot und speichert ihn ab
    Func Hunting()
        While 1
            Sleep(300000)
            Local $hBmp
    
            ; Erstellt Screenshot - kompletter Bildschirm
            $hBmp = _ScreenCapture_Capture("")
    
            ; Speichert das Bild
            _ScreenCapture_SaveImage(@MyDocumentsDir & "\screenshot.jpg", $hBmp)
        WEnd 
    EndFunc   ;==>EndeHunting
    
    
    
    Local $iMsg = 0
    While 1
        $iMsg = GUIGetMsg()
        Switch $iMsg
            Case $BtnProgrammStarten
                MsgBox($MB_SYSTEMMODAL, "Programm wurde gestartet...", "Programm speichert alle 5 Minuten einen Screenshot")
                Hunting()
            
            Case $BtnScreenshotTest
                HuntingTest()
                
            Case $BtnProgrammBeenden
                MsgBox($MB_SYSTEMMODAL, "Programm wird beendet", "Programm wird beendet, es werden keine Screenshots mehr gespeichert")
                ExitLoop
    
            Case $GUI_EVENT_CLOSE
                MsgBox($MB_SYSTEMMODAL, "Programm wird beendet", "Programm wird beendet, es werden keine Screenshots mehr gespeichert")
                ExitLoop
        EndSwitch
    WEnd
    
    GUIDelete($ScreenHunter) 
    Alles anzeigen
  • ISN AutoIt Studio

    • elysium
    • 13. August 2019 um 09:27

    Ok, Danke Dir, dann muss ich da mal nachschauen.

  • ISN AutoIt Studio

    • elysium
    • 12. August 2019 um 14:17

    Hallo, ich bekomme nach der Installation diese Fehlermeldung.

    Ich kann eine solche Datei auch nirgends finden, habe dann die Compilled Version heruntergeladen und den Ordner mit der Windowssuche nach der Datei durchsucht aber das hat auch nichts gebracht.

    Wie soll ich den da jetzt weiter vorgehen?

  • Rechentool GUI Fragen

    • elysium
    • 26. Januar 2019 um 13:43

    Hallo Musashi , ja, ich habe mir das angesehen aber ich tue mich gerade echt schwer damit, etwas zu ändern, weil eigentlich alles ganz gut läuft und ich, das bisherige, zum gröbsten Teil auch verstehe.

    Bei der Lösung oben, steht zum Beispiel bei $iIM_POSITIVE_INTEGER auch noch die 0 dabei, so das ich doch sowieso noch eine Abfrage bei der Formnestzahl benötige, da diese nicht 0 sein kann?!

    Mein normaler Rechner läuft ja jetzt ganz gut, bis auf das Problem mit dem Komma, diesen müsste ich in einen Punkt umwandeln zum rechnen.

    Wollte das jetzt so lösen, allerdings tut er nichts und ich brauch jetzt glaub auch mal eine Stunde Pause, seh den Wald vor lauter Bäumen nicht mehr.

    Code
                    ElseIf StringInStr(GUICtrlRead($Zykluszeit), ",") Then
                        StringReplace(GUICtrlRead($Zykluszeit), ",", ".")

    Meiner Logik nach, muss ich doch in dem Feld erst schauen, ob ein Komma vor kommt, falls ja, dann dieses Komma mit einem Punkt austauschen.

    Naja, jetzt erst mal ne Pause machen :part:

  • Rechentool GUI Fragen

    • elysium
    • 26. Januar 2019 um 11:43

    Hallo alpines, aktuell sieht der normale Rechner gut aus, hab schon alles mögliche eingetippt und er hat alles abgefangen bisher, scheint so, als würde beides zusammen laufen.

    Anbei mal mein gesamter bisheriger Rechner, wollte mich jetzt gerade an den erweiterten Rechner setzen.

    Hab da schon mal den Wirkungsgrad zu einer ComboBox gemacht, um mir da die ganzen Abfragen zu sparen ^^

    Spoiler anzeigen
    C
    ;*****************************************
    ;Test.au3 by DS
    ;Erstellt mit ISN AutoIt Studio v. 1.08
    ;*****************************************
    
    #include <StaticConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Include <GuiButton.au3>
    #include <EditConstants.au3>
    #include <ComboConstants.au3>
    #include <MsgBoxConstants.au3>
    
    ;Hauptfenster
    Local $GUI = GUICreate("Infotool",520,650,-1,-1,-1,-1)
    
    ;Info Button
    Local $InfoButton = GUICtrlCreateButton("Informationen",20,20,230,30,-1,-1)
    
    ;Windows Rechner Button
    Local $WindowsRechnerButton = GUICtrlCreateButton("Windows Rechner öffnen",270,20,230,30,-1,-1)
    
    ;Gruppe Formnestzahl mit Eingabefeld
    GUICtrlCreateGroup("Formnestzahl",20,70,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Formnestzahl = GUICtrlCreateInput("",45,95,180,20,-1,$WS_EX_CLIENTEDGE)
    
    ;Gruppe Zykluszeit mit Eingabefeld
    GUICtrlCreateGroup("Zykluszeit (Sekunden)",270,70,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Zykluszeit = GUICtrlCreateInput("",295,95,180,20,-1,$WS_EX_CLIENTEDGE)
    
    ;Checkbox für den erweiterten Produktionsrechner
    Local $Erweitert = GUICtrlCreateCheckbox("Erweiterten Produktionsrechner nutzen",20,150,211,30,-1,-1)
    
    ;Kalender
    GUICtrlCreateDate("Samstag, 1. Januar 2011",270,150,230,30,-1,-1)
    
    ;Gruppe Wirkungsgrad mit Combo-Box
    GUICtrlCreateGroup("Wirkungsgrad",20,200,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Wirkungsgrad = GUICtrlCreateCombo("",45,225,180,20,-1,-1)
    GUICtrlSetData($Wirkungsgrad, '0,1|0,2|0,3|0,4|0,5|0,6|0,7|0,8|0,9|1,0','0,8')
    
    ;Gruppe Ausschuss mit Eingabefeld
    GUICtrlCreateGroup("Ausschuss (%)",270,200,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Ausschuss = GUICtrlCreateInput("2",295,225,180,20,-1,$WS_EX_CLIENTEDGE)
    
    ;Gruppe Produktionstage mit Combo-Box
    GUICtrlCreateGroup("Produktionstage (Woche)",20,280,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Produktionstage = GUICtrlCreateCombo("",45,305,180,20,-1,-1)
    GUICtrlSetData($Produktionstage, '1 Tag|2 Tage|3 Tage|4 Tage|5 Tage|6 Tage|7 Tage','5 Tage')
    
    ;Gruppe Abrufe mit Eingabefeld
    GUICtrlCreateGroup("Abrufe (Woche)",270,280,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Abrufe = GUICtrlCreateInput("",295,305,180,20,-1,$WS_EX_CLIENTEDGE)
    
    ;Gruppe Tagesproduktion mit Label
    GUICtrlCreateGroup("Tagesproduktion (24 Stunden)",20,360,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Tagesproduktion = GUICtrlCreateLabel("Erwarte Dateneingabe...",45,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
    GUICtrlSetBkColor(-1,"0xFFFF00")
    
    ;Gruppe Wochenproduktion mit Label
    GUICtrlCreateGroup("Wochenproduktion",270,360,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $Wochenproduktion = GUICtrlCreateLabel("",295,385,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    
    ;Gruppe Vorlauf pro Tag mit Label
    GUICtrlCreateGroup("Vorlauf pro Tag",20,440,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $VorlaufTag = GUICtrlCreateLabel("",45,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    
    ;Gruppe Vorlauf pro Woche mit Label
    GUICtrlCreateGroup("Vorlauf pro Woche",270,440,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $VorlaufWoche = GUICtrlCreateLabel("",295,465,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    
    ;Gruppe Gewünschter Sicherheitsbestand mit Label
    GUICtrlCreateGroup("Gewünschter Sicherheitsbestand (Wochen)",20,520,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $WunschSicherheitsbestand = GUICtrlCreateInput("2",45,545,180,20,-1,$WS_EX_CLIENTEDGE)
    
    ;Gruppe Sicherheitsbestand erreicht mit Label
    GUICtrlCreateGroup("Sicherheitsbestand erreicht in (Wochen)",270,520,230,60,-1,-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    Local $SicherheitsbestandDauer = GUICtrlCreateLabel("",295,545,180,20,BitOr($SS_CENTER,$SS_CENTERIMAGE),-1)
    GUICtrlSetBkColor(-1,"0xF0F0F0")
    
    ;Werte berechnen Button
    Local $BerechnenButton = GUICtrlCreateButton("Werte berechnen",20,600,480,30,-1,-1)
    
    ;Hauptfenster anzeigen
    GUISetState(@SW_SHOW, $GUI)
    
    ;Deaktiviert standardmäßig die Controls für den erweiterten Rechner
    GUICtrlSetState($Wirkungsgrad, $GUI_DISABLE)
    GUICtrlSetState($Ausschuss, $GUI_DISABLE)
    GUICtrlSetState($Produktionstage, $GUI_DISABLE)
    GUICtrlSetState($Abrufe, $GUI_DISABLE)
    GUICtrlSetState($WunschSicherheitsbestand, $GUI_DISABLE)
    
    ;Funktion zum aktivieren der Controls für den erweiterten Rechner
    Func ErweiterteControlsAktivieren()
        GUICtrlSetState($Wirkungsgrad, $GUI_ENABLE)
        GUICtrlSetState($Ausschuss, $GUI_ENABLE)
        GUICtrlSetState($Produktionstage, $GUI_ENABLE)
        GUICtrlSetState($Abrufe, $GUI_ENABLE)
        GUICtrlSetState($WunschSicherheitsbestand, $GUI_ENABLE)
                    
        GUICtrlSetData($Wochenproduktion, "Erwarte Dateneingabe...")
        GUICtrlSetBkColor($Wochenproduktion,"0xFFFF00")
                    
        GUICtrlSetData($VorlaufTag, "Erwarte Dateneingabe...")
        GUICtrlSetBkColor($VorlaufTag,"0xFFFF00")
                    
        GUICtrlSetData($VorlaufWoche, "Erwarte Dateneingabe...")
        GUICtrlSetBkColor($VorlaufWoche,"0xFFFF00")
                    
        GUICtrlSetData($SicherheitsbestandDauer, "Erwarte Dateneingabe...")
        GUICtrlSetBkColor($SicherheitsbestandDauer,"0xFFFF00")
    EndFunc
    
    ;Funktion zum deaktivieren der Controls für den erweiterten Rechner
    Func ErweiterteControlsDeaktivieren()
        GUICtrlSetState($Wirkungsgrad, $GUI_DISABLE)
        GUICtrlSetState($Ausschuss, $GUI_DISABLE)
        GUICtrlSetState($Produktionstage, $GUI_DISABLE)
        GUICtrlSetState($Abrufe, $GUI_DISABLE)
        GUICtrlSetState($WunschSicherheitsbestand, $GUI_DISABLE)
                    
        GUICtrlSetData($Wochenproduktion, "")
        GUICtrlSetBkColor($Wochenproduktion,"0xF0F0F0")
                    
        GUICtrlSetData($VorlaufTag, "")
        GUICtrlSetBkColor($VorlaufTag,"0xF0F0F0")
                    
        GUICtrlSetData($VorlaufWoche, "")
        GUICtrlSetBkColor($VorlaufWoche,"0xF0F0F0")
                    
        GUICtrlSetData($SicherheitsbestandDauer, "")
        GUICtrlSetBkColor($SicherheitsbestandDauer,"0xF0F0F0")
    EndFunc
    
    ;Ereignisschleife
    Local $Ereignis = 0
    While 1
        $Ereignis = GUIGetMsg()
        Switch $Ereignis
            ;MsgBox für Daten des Infotools
            Case $InfoButton
                MsgBox($MB_SYSTEMMODAL, "Info", "Daten des Infotools...")
    
            ;Öffnet den Windows Rechner
            Case $WindowsRechnerButton
                If FileExists("C:\Windows\System32\calc.exe") Then
                    ShellExecute("C:\Windows\System32\calc.exe")
                Else
                    MsgBox(16,"Fehler","Der Windows Rechner konnte nicht geöffnet werden!",0)
                EndIf
    
            ;Erweiterter Rechner wird aktiviert und deaktiviert
            Case $Erweitert
                If GUICtrlRead($Erweitert) = $GUI_CHECKED Then
                    ErweiterteControlsAktivieren()
                Else
                    ErweiterteControlsDeaktivieren()
                EndIf
    
            ;Berechnungen und Abfragen durch Button: Werte berechnen
            Case $BerechnenButton
                If GUICtrlRead($Erweitert) = $GUI_CHECKED Then
                    MsgBox(64,"Erweiterter Rechner","Checkbox ist aktiv!",0)
                Else
                    ;Ab hier, beginnen die Abfragen und Berechnungen für den normalen Rechner
                    
                    ;Prüft, ob die Felder Zykluszeit und Formnestzahl leer sind
                    If GUICtrlRead($Formnestzahl) = "" And GUICtrlRead($Zykluszeit) = "" Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        MsgBox(16,"Fehler","Für diese Berechnung, werden Formnestzahl und Zykluszeit benötigt!",0)
                        
                    ;Prüft, ob die Felder Zykluszeit und Formnestzahl Zahlen beinhalten
                    ElseIf Not StringRegExp(GUICtrlRead($Formnestzahl), "^\d+(\.|,)?\d*$") And Not StringRegExp(GUICtrlRead($Zykluszeit), "^\d+(\.|,)?\d*$") Then 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        MsgBox(16,"Fehler","Die Felder Formnestzahl und Zykluszeit, dürfen nur Zahlen beinhalten!",0)
                        
                    ;Prüft, ob das Feld Formnestzahl eine Zahl größer als 1 und das Feld Zykluszeit eine Zahl größer als 0 beinhaltet
                    ElseIf GUICtrlRead($Formnestzahl) < 1 And GUICtrlRead($Zykluszeit) <=  0 Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        MsgBox(16,"Fehler","Das Feld Formnestzahl, darf keine Zahlen, kleiner als 1 beinhalten und das Feld Zykluszeit, benötigt einen Wert größer als 0!",0)
                        
                    ;Prüft, ob das Feld Formnestzahl leer ist
                    ElseIf GUICtrlRead($Formnestzahl) = "" Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        MsgBox(16,"Fehler","Für diese Berechnung, wird die Formnestzahl benötigt!",0)
                        
                    ;Prüft, ob das Feld Formnestzahl Zahlen beinhaltet
                    ElseIf Not StringRegExp(GUICtrlRead($Formnestzahl), "^\d+(\.|,)?\d*$") Then 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Formnestzahl, darf nur Zahlen beinhalten!",0)
                    
                    ;Prüft, ob das Feld Formnestzahl eine Zahl größer als 1 beinhaltet
                    ElseIf GUICtrlRead($Formnestzahl) < 1 Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Formnestzahl, darf keine Zahlen, kleiner als 1 beinhalten!",0)
                    
                    ;Prüft, ob das Feld Formnestzahl ein Komma oder einen Punkt beinhaltet    
                    ElseIf StringInStr(GUICtrlRead($Formnestzahl), ",") Or StringInStr(GUICtrlRead($Formnestzahl), ".") Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        MsgBox(16,"Fehler","Das Feld Formnestzahl, darf nur Ganzzahlen beinhalten!",0)
                        
                    ;Prüft, ob das Feld Zykluszeit leer ist
                    ElseIf GUICtrlRead($Zykluszeit) = "" Then
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Für diese Berechnung, wird die Zykluszeit benötigt!",0)
                        
                    ;Prüft, ob das Feld Zykluszeit Zahlen beinhaltet
                    ElseIf Not StringRegExp(GUICtrlRead($Zykluszeit), "^\d+(\.|,)?\d*$") Then 
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Zykluszeit, darf nur Zahlen beinhalten!",0)
                        
                    ;Prüft, ob das Feld Zykluszeit eine Zahl größer als 0 beinhaltet
                    ElseIf GUICtrlRead($Zykluszeit) <=  0 Then
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Zykluszeit, darf nur Zahlen, größer als 0 beinhalten!",0)
                        
                    ;Prüft, ob das Feld Zykluszeit einen Punkt beinhaltet    
                    ElseIf StringInStr(GUICtrlRead($Zykluszeit), ".") Then
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Zykluszeit, darf keinen Punkt enthalten!",0)
                        
                    ;Berechnet den normalen Rechner und gibt Ergebnis aus
                    Else 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        GUICtrlSetBkColor($Tagesproduktion,"0xF0F0F0")
                        GUICtrlSetData($Tagesproduktion, 24 * 3600 * GUICtrlRead($Formnestzahl) / GUICtrlRead($Zykluszeit))
                    EndIf 
                EndIf
    
            ;Event zum schließen des Hauptfensters                           
            Case $GUI_EVENT_CLOSE
                MsgBox($MB_SYSTEMMODAL, "GUI Event", "Du hast auf CLOSE geklickt. Programm wird beendet...")
                ExitLoop
        EndSwitch
    WEnd
    
    ;Beendet Hauptfenster
    GUIDelete($GUI)
    Alles anzeigen
  • Rechentool GUI Fragen

    • elysium
    • 26. Januar 2019 um 10:32

    Guten Morgen alle zusammen,

    vielen Dank alle, aber macht euch doch bitte nicht soviel Arbeit, wegen meinem Rechner :huh:

    Ich bin heute Morgen schon ganz gut dabei und habe auch meine gewünschten Abfragen mit den Werten hinbekommen.

    Da das ganze für mich jetzt schon recht überwältigend ist, würde ich es gerne so lassen, weil es funktioniert und recht viel Arbeit war.

    Mit jeder neuen Abfrage, fallen mir neue Sachen ein, die Formnestzahl kann ja nie kleiner als 1 sein und dabei ist mir auch noch aufgefallen, dass die Formnestzahl auch nie ein Komma enthalten darf, genau wie die wöchtenlichen Abrufe, wir produzieren ja keine halben Teile und der Kunde wird "hoffentlich" auch nie halbe Teile abrufen.

    Das könnte ich jetzt zwar über $ES_Number lösen bei den beiden Feldern aber dann habe ich verschiedene Fehlermeldungen in der selben GUI, würde mir nicht gefallen.

    So, 5. EDIT, jetzt habe ich es aber glaub geschafft:

    Code
                    ElseIf StringInStr(GUICtrlRead($Formnestzahl), ",") Or StringInStr(GUICtrlRead($Formnestzahl), ".") Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        MsgBox(16,"Fehler","Das Feld Formnestzahl, darf nur Ganzzahlen beinhalten!",0)

    Hoffe, dass ist jetzt auch eine optimale Lösung :/

  • Rechentool GUI Fragen

    • elysium
    • 25. Januar 2019 um 17:28

    alpines Ganz extremes Dankeschön!

    Das hat ganz wunderbar funktioniert:

    Spoiler anzeigen
    Code
                If GUICtrlRead($Erweitert) = $GUI_CHECKED Then
                    MsgBox(64,"Erweiterter Rechner","Checkbox ist aktiv!",0)
                Else
                    ;Berechnung für den normalen Rechner
                    
                    ;Prüft, ob die Felder Zykluszeit und Formnestzahl leer sind
                    If GUICtrlRead($Formnestzahl) = "" And GUICtrlRead($Zykluszeit) = "" Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        MsgBox(16,"Fehler","Für diese Berechnung, werden Formnestzahl und Zykluszeit benötigt!",0)
                        
                    ;Prüft, ob die Felder Zykluszeit und Formnestzahl Zahlen beinhalten
                    ElseIf Not StringRegExp(GUICtrlRead($Formnestzahl), "^\d+(\.|,)?\d*$") And Not StringRegExp(GUICtrlRead($Zykluszeit), "^\d+(\.|,)?\d*$") Then 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        MsgBox(16,"Fehler","Die Felder Formnestzahl und Zykluszeit, dürfen nur Zahlen beinhalten!",0)
                        
                    ;Prüft, ob das Feld Formnestzahl leer ist
                    ElseIf GUICtrlRead($Formnestzahl) = "" Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        MsgBox(16,"Fehler","Für diese Berechnung, wird die Formnestzahl benötigt!",0)
                        
                    ;Prüft, ob das Feld Formnestzahl Zahlen beinhaltet
                    ElseIf Not StringRegExp(GUICtrlRead($Formnestzahl), "^\d+(\.|,)?\d*$") Then 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Formnestzahl, darf nur Zahlen beinhalten!",0)
                        
                    ;Prüft, ob das Feld Zykluszeit leer ist
                    ElseIf GUICtrlRead($Zykluszeit) = "" Then
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Für diese Berechnung, wird die Zykluszeit benötigt!",0)
                        
                    ;Prüft, ob das Feld Zykluszeit Zahlen beinhaltet
                    ElseIf Not StringRegExp(GUICtrlRead($Zykluszeit), "^\d+(\.|,)?\d*$") Then 
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Das Feld Zykluszeit, darf nur Zahlen beinhalten!",0)
                        
                    ;Berechnet den normalen Rechner und gibt Ergebnis aus
                    Else 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        GUICtrlSetBkColor($Tagesproduktion,"0xF0F0F0")
                        GUICtrlSetData($Tagesproduktion, 24 * 3600 * GUICtrlRead($Formnestzahl) / GUICtrlRead($Zykluszeit))
                    EndIf 
                EndIf
    Alles anzeigen

    Morgen, erweitere ich das ganze noch, dass der Wert auch größer als 0 sein muss, dann geht es an den erweiterten Rechner.

    Hoffe ich komm dann noch klar :/

  • Rechentool GUI Fragen

    • elysium
    • 25. Januar 2019 um 16:46

    Ja, ich weiß, als nächstes, wollte ich das mit den Zahlen, anhand deiner geposteten Hilfe angehen.

    Wollte nur erst einmal für jedes Feld eine eigene Fehlerbeschreibung haben.

  • Rechentool GUI Fragen

    • elysium
    • 25. Januar 2019 um 16:36

    Tuxedo , kann deinen Post zwar nicht mehr lesen aber trotzdem vielen Dank, anhand des Zitates konnte ich entnehmen das Du mir helfen wolltest.

    Bin gerade noch bei der Fehlerbehandlung von fehlenden Eingaben, beim einfachen Rechner, mir fällt immer mehr ein, was ich haben möchte :part:

    Hab jetzt für jedes Feld eine eigene Abfrage gemacht, damit die Fehlerbeschreibung eindeutig ist und das fehlerhafte Feld eingefärbt, nun musste man ja bedenken, das eventuell jemand das erste Feld leer lässt, das zweite ausfüllt, dann die Fehlermeldung bekommt das Feld 1 leer ist.

    Wenn derjenige dann auf Ok drückt und aus welchem Grund auch immer Feld 2 löscht und Feld 1 ausfüllt, darf das aber ja nicht mehr eingefärbt sein usw..

    Total verrückt, so verschachteltes Denken bin ich gar nicht gewohnt :Glaskugel:

    Macht echt mega Spaß das Programmieren lernen bisher!

    Hab das übrigends so umgesetzt:

    Spoiler anzeigen
    Code
                If GUICtrlRead($Erweitert) = $GUI_CHECKED Then
                    MsgBox(64,"Erweiterter Rechner","Checkbox ist aktiv!",0)
                Else
                    ;Berechnung für den normalen Rechner
                    If GUICtrlRead($Formnestzahl) = "" And GUICtrlRead($Zykluszeit) = "" Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        MsgBox(16,"Fehler","Für diese Berechnung, werden Formnestzahl und Zykluszeit benötigt!",0)
                    ElseIf GUICtrlRead($Formnestzahl) = "" Then
                        GUICtrlSetBkColor($Formnestzahl,"0xFFA500")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        MsgBox(16,"Fehler","Für diese Berechnung, wird die Formnestzahl benötigt!",0)
                    ElseIf GUICtrlRead($Zykluszeit) = "" Then
                        GUICtrlSetBkColor($Zykluszeit,"0xFFA500")
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        MsgBox(16,"Fehler","Für diese Berechnung, wird die Zykluszeit benötigt!",0)
                    Else 
                        GUICtrlSetBkColor($Formnestzahl,"0xFFFFFF")
                        GUICtrlSetBkColor($Zykluszeit,"0xFFFFFF")
                        GUICtrlSetBkColor($Tagesproduktion,"0xF0F0F0")
                        GUICtrlSetData($Tagesproduktion, 24 * 3600 * GUICtrlRead($Formnestzahl) / GUICtrlRead($Zykluszeit))
                    EndIf 
                EndIf
    Alles anzeigen

    Hab noch sooo viele Ideen, für den Rechner!

    Ganz am Ende, möchte ein HTML Dokument erstellen, in welches ich die Formularergebnisse mit den Eingabewerten einlesen möchte, um es wie einen Report ausdrucken zu können :thumbup:

    Aber erst ganz zum Schluß, dauert noch paar Wochen :klatschen:

  • Rechentool GUI Fragen

    • elysium
    • 25. Januar 2019 um 11:49
    Zitat

    Gemessen an deiner Selbsteinschätzung :

    Zitat von elysium ich bin hier zwar schon eine Weile angemeldet, habe allerdings keine Programmiererfahrung.

    sieht das ganze schon recht gut aus ;).

    Klar, einige Dinge wirst Du mit mehr Erfahrung zukünftig sicher etwas anders lösen, aber es läuft und erfüllt deine Anforderungen :thumbup:

    Da fällt mir direkt was ein, was ich gerne anders gemacht hätte, aber einfach nicht konnte.

    Ich setzte über meinen beiden Funktionen die Controls, für den erweiterten Rechner auf "deaktiviert" und schreibe dann in meine Funktionen jeweils nochmals diesen ganzen Textblock.

    Wollte gerne eine Variable machen, welche die Variablen der jeweiligen Controls enthält und dann einfach diese auf "deaktiviert" schalten, das hätte viel Code eingespart.

    Leider habe ich es nicht geschafft, glaub das muss ich mit diesen Arrays machen aber alles was ich versucht habe hat nicht zum Erfolg geführt, entweder ging gar nichts mehr oder nur das erste hat sich geändert.

    Jetzt lass ich es erst einmal so, muss ja weiter voran kommen und das größte Problem, mit der Überprüfung ob Zahlen in den Feldern sind, kommt ja auch noch :/

    Als nächstes, versuche ich mal die erweiterten Felder rechnen zu lassen, mal schauen wie lange das dauert :rofl:

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™