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
So, jetzt gleich mal updaten gehen
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
So, jetzt gleich mal updaten gehen
Ich schubs das mal ganz vorsichtig wieder nach oben, vielleicht kann mir ja doch noch wer einen Hinweis auf den Fehler geben.
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
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
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
;*****************************************
;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
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.
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:
;*****************************************
;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
;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
;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
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
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.
;*****************************************
;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
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.
;*****************************************
;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
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
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.
;*****************************************
;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
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
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?
;*****************************************
;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
Ok, Danke Dir, dann muss ich da mal nachschauen.
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.
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
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
;*****************************************
;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
Guten Morgen alle zusammen,
vielen Dank alle, aber macht euch doch bitte nicht soviel Arbeit, wegen meinem Rechner
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:
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
alpines Ganz extremes Dankeschön!
Das hat ganz wunderbar funktioniert:
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
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.
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
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
Macht echt mega Spaß das Programmieren lernen bisher!
Hab das übrigends so umgesetzt:
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
Aber erst ganz zum Schluß, dauert noch paar Wochen
ZitatGemessen 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
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