3 Fragen; SQLite, Problem mit If-Anweisung, Resource Datein eins Programmes

  • Hi

    ich habe verschiedene Fragen und zwar:

    1.
    Ich möchte in eine SQLite Datenbank Variablen schreiben. Leider kommt immer eine Fehlermeldung

    Mein Code:

    Spoiler anzeigen
    [autoit]


    #Include <SQLite.au3>
    #Include <SQLite.dll.au3>

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

    Opt("MustDeclareVars", 1) ; Variablen müssen deklariert werden

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

    ;Variablen anfang
    Global $titel = "PC-Key", $version = "1.0", $resource_dir = @ScriptDir & "\resource", $sSQliteDll, $Traytip, $Blockdesktop
    ;Variablen ende

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

    $sSQliteDll = _SQLite_Startup ()
    _SQLite_Open ($resource_dir & "\configuration.moe")
    $Traytip = MsgBox(4132,$titel,"Wollen Sie eine Meldung erhalten wenn die Eingabe gesperrt wurde?")
    Select
    Case $Traytip = 6 ;Yes
    $Traytip=1
    Case $Traytip = 7 ;No
    $Traytip=0
    EndSelect
    $Blockdesktop = MsgBox(4132,$titel,"Soll der Desktop grauschattiert werden, wenn der Computer gesperrt wurde?")
    Select
    Case $Blockdesktop = 6 ;Yes
    $Blockdesktop=1
    Case $Blockdesktop = 7 ;No
    $Blockdesktop=0
    EndSelect
    _SQLite_Exec(-1,"Create table Config (Configtype text, Value text);" & _
    "Insert into Config values ('TrayTip','".$Traytip."');" & _
    "Insert into Config values ('BlockDesktop','".$Blockdesktop."');")
    _SQLite_Close ()
    _SQLite_Shutdown ()
    Exit

    [/autoit]


    2.
    Ich habe einen Shutdown-Manager geschreiben, mit welchem man über einen Uhrzeit oder einen Countdown den PC ausschalten abmelden etc. kann.
    Nun geht ja die Uhr bekanntlich nur bis 23 und dann gehts wieder mit 00 los. (Bei Minuten und Sekunden bis 59 und dann wieder 00)

    Das ganze habe ich mit einer If-Anweisung realiesiert. Leider kommt aber trotzdem noch die Fehler-Meldung wenn ich den PC via Uhrzeit runterfahren lasse und 00:00:05 eingebe. (Es kommt die Fehler-Meldung vom Countdown und der Timer für die Uhrzeit startet) Umgekehrt ist es genau so. Über schreite ich bei Countdwon die Spezifikationden der Uhrzeit aber der Countdown ist gültig, so komm die Fehlermeldung aber der Coutndown startet. Anbei Screens die das ganze nochmal zeigen:

    Spoiler anzeigen


    Nun meine Frage wie bekomme ich die falschen Fehlermeldungen weg? Hier mein Code:

    Spoiler anzeigen
    [autoit]


    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=shutdown.ico
    #AutoIt3Wrapper_Res_Description=by Michi26206
    #AutoIt3Wrapper_Res_Fileversion=1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright=by Michi26206
    #AutoIt3Wrapper_Res_Language=1031
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs --------------------------------------------------------------------------------------------------------

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

    Shutdown-Manager.exe (C) by Michi26206 - Programm zum geziehlten Auschalten, Abmelden etc. des PCs

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

    #ce --------------------------------------------------------------------------------------------------------

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

    #Include <GUIConstantsEx.au3>
    #Include <WindowsConstants.au3>
    #Include <ButtonConstants.au3>
    #Include <Misc.au3>
    #Include <Date.au3>

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

    Opt("GUICloseOnESC", 1) ; ESC drücken beendet Programm nicht
    Opt("TrayAutoPause", 0) ; das Script nicht pausieren, wenn auf das Tray-Icon geklickt wird
    Opt("TrayMenuMode", 1) ; kein Defaul-Tray-Menu
    Opt("MustDeclareVars", 1) ; Variablen müssen deklariert werden
    Opt("TrayOnEventMode",1)

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

    ;Vriablen anfang
    Global $titel = "Shutdown-Manager", $version = "1.0.0.0", $quell_code_zeilen = "209", $Maindialog, $uhrzeit_redio, $timer_redio, $stunden, $minuten, $sekunden, $shutdown, $ruhezustand, $standby, $reboot, $logoff, $nMsg, $IE, $aktion, $aktion_ausfuehren, $modus = "-1", $timer, $timer_tick, $countdown_show = "1", $gui_read_stunden, $gui_read_minuten, $gui_read_sekunden, $aktionszeitpunkt
    Dim $umwandeln[4], $countdown[4]
    ;Vriablen ende

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

    ;--------------------------------------------------------
    ;--------------- Anfang GUI Maindialog ------------------
    ;--------------------------------------------------------
    $Maindialog = GUICreate($titel, 220, 330, -1, -1)
    GUISetBkColor(0xffffff)
    GUICtrlCreateLabel($titel & " v." & $version, 50, 5, 150, 25, $WS_DISABLED)
    $aktion = GUICtrlCreateGroup("Aktion", 50, 30, 105, 170)
    $shutdown = GUICtrlCreateRadio("Ausschalten", 65, 55, 85, 20)
    GUICtrlSetTip(-1, "Computer Ausschalten")
    $ruhezustand = GUICtrlCreateRadio("Ruhezustand", 65, 85, 85, 20)
    GUICtrlSetTip(-1, "Computer wird in den Ruhezustand gefahren")
    $standby = GUICtrlCreateRadio("Standby", 65, 115, 85, 20)
    GUICtrlSetTip(-1, "Computer wird in den Standby-Modus gefahren")
    $reboot = GUICtrlCreateRadio("Neu starten", 65, 145, 85, 20)
    GUICtrlSetTip(-1, "Computer wird Neu gestartet")
    $logoff = GUICtrlCreateRadio("Abmelden", 65, 175, 85, 20)
    GUICtrlSetTip(-1, "Benutzer wird abgemeldet")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlCreateGroup("Aktionszeit", 10, 210, 200, 70)
    $uhrzeit_redio = GUICtrlCreateRadio("um: ", 25, 225, 40, 20)
    GUICtrlSetTip(-1, "Zeitpunkt, zu dem die gewünschte Aktion ausgeführt werden soll")
    $timer_redio = GUICtrlCreateRadio("in: ", 25, 255, 40, 20)
    GUICtrlSetTip(-1, "Zeitpunkt, zu dem die gewünschte Aktion ausgeführt werden soll")
    $stunden = GUICtrlCreateInput("", 75, 242, 30, 20)
    GUICtrlSetLimit(-1, 2)
    GUICtrlCreateLabel(":", 111, 244, 10, 20)
    $minuten = GUICtrlCreateInput("", 120, 242, 30, 20)
    GUICtrlSetLimit(-1, 2)
    GUICtrlCreateLabel(":", 155, 244, 10, 20)
    $sekunden = GUICtrlCreateInput("", 165, 242, 30, 20)
    GUICtrlSetLimit(-1, 2)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $aktion_ausfuehren = GUICtrlCreateButton(" OK ", 95, 290)
    TrayCreateItem($titel & " v." & $version)
    TrayCreateItem("")
    TrayCreateItem("About")
    TrayItemSetOnEvent(-1,"About")
    TrayCreateItem("Exit")
    TrayItemSetOnEvent(-1,"Close")
    TraySetState()
    GUISetState(@SW_SHOW, $Maindialog)
    ;--------------------------------------------------------
    ;----------------- Ende GUI Maindialog ------------------
    ;--------------------------------------------------------
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    HotKeySet( "!q")
    Exit
    Case $shutdown
    $aktion = "Ausschalten"
    Case $ruhezustand
    $aktion = "Ruhezustand"
    Case $standby
    $aktion = "Standby"
    Case $reboot
    $aktion = "Neu starten"
    Case $logoff
    $aktion = "Abmelden"
    Case $uhrzeit_redio
    $modus = "Uhrzeit"
    Case $timer_redio
    $modus = "Timer"
    Case $aktion_ausfuehren
    $gui_read_stunden = _Number(GUICtrlRead($stunden))
    $gui_read_minuten = _Number(GUICtrlRead($minuten))
    $gui_read_sekunden = _Number(GUICtrlRead($sekunden))
    GUISetState(@SW_HIDE, $Maindialog)
    HotKeySet( "!q", "Close")
    If $aktion = 5 Or $modus = -1 Or $gui_read_stunden = -1 Or $gui_read_minuten = -1 Or $gui_read_sekunden = -1 Then
    MsgBox(16, "Error","Bei der Auswahl der Optionen ist Ihnen ein Fehler unterlaufen." & @CRLF & "Bitte kontrollieren Sie Ihre Eingabe.")
    GUISetState(@SW_SHOW, $Maindialog)
    ElseIf $modus = "Uhrzeit" And $gui_read_stunden < -1 Or $gui_read_minuten < -1 Or $gui_read_sekunden < -1 Or $gui_read_stunden > 23 Or $gui_read_minuten > 59 Or $gui_read_sekunden > 59 Then
    MsgBox(64, "Error","Es ist ein Gültigkeitsfehler aufgetreten." & @CRLF & "Es gilt:" & @CRLF & "Stunden müssen kleiner 24 sein aber größer als 0." & @CRLF & "Minuten müssen kleiner 60 sein aber größer als 0." & @CRLF & "Sekunden müssen kleiner 60 sein aber größer als 0.")
    GUISetState(@SW_SHOW, $Maindialog)
    ElseIf $modus = "Timer" And $gui_read_stunden < -1 Or $gui_read_minuten < -1 Or $gui_read_sekunden < 6 Then
    MsgBox(64, "Error","Es ist ein Gültigkeitsfehler aufgetreten." & @CRLF & "Es gilt:" & @CRLF & "Stunden müssen größer als 0." & @CRLF & "Minuten müssen größer als 0." & @CRLF & "Sekunden müssen mindestens 6 sein.")
    GUISetState(@SW_SHOW, $Maindialog)
    EndIf
    If $aktion <> 5 And $modus = "Uhrzeit" And $gui_read_stunden <= 23 And $gui_read_minuten <= 59 And $gui_read_sekunden <= 59 And $gui_read_stunden >= 0 And $gui_read_minuten >= 0 And $gui_read_sekunden >= 0 Then
    $aktionszeitpunkt = $gui_read_stunden & ":" & $gui_read_minuten & ":" & $gui_read_sekunden
    MsgBox(64, "Info", "Aktion " & $aktion & " " & @CRLF & "Wird ausgeführt um: " & $aktionszeitpunkt & @CRLF & @CRLF & "Achtung: Das Programm kann absofort nur noch über ALT + Q oder das Traymenü beendet werden!", 5)
    If $countdown_show = 1 Then
    If _NowTime(5) < $aktionszeitpunkt Then
    $aktionszeitpunkt = _TimeToTicks($gui_read_stunden, $gui_read_minuten, $gui_read_sekunden)
    Else
    $aktionszeitpunkt = _TimeToTicks($gui_read_stunden, $gui_read_minuten, $gui_read_sekunden) + 86400000
    EndIf
    _TicksToTime($aktionszeitpunkt - _TimeToTicks(@HOUR,@MIN,@SEC), $countdown[1], $countdown[2], $countdown[3])
    SplashTextOn($aktion & " in", $countdown[1] & ":" & $countdown[2] & ":" & $countdown[3], 300, 70, @DesktopWidth-310, 10, 18, Default, 40)
    WinActivate($aktion & " in")
    EndIf
    Do
    If $countdown_show = 1 Then
    _TicksToTime($aktionszeitpunkt - _TimeToTicks(@HOUR,@MIN,@SEC), $countdown[1], $countdown[2], $countdown[3])
    ControlSetText($aktion & " in", "", "Static1", $countdown[1] & ":" & $countdown[2] & ":" & $countdown[3])
    EndIf
    Sleep(100)
    Until $gui_read_stunden & ":" & $gui_read_minuten & ":" & $gui_read_sekunden = _NowTime(5)
    SplashOff()
    Switch $aktion
    Case "Ausschalten"
    Shutdown(1)
    Exit
    Case "Ruhezustand"
    Shutdown(64)
    Exit
    Case "Standby"
    Shutdown(32)
    Exit
    Case "Neu starten"
    Shutdown(2)
    Exit
    Case "Abmelden"
    Shutdown(0)
    Exit
    EndSwitch
    ElseIf $aktion <> 5 And $Modus = "Timer" And $gui_read_stunden >= 0 And $gui_read_minuten >= 0 And $gui_read_sekunden >= 6 Then
    $timer = TimerInit()
    MsgBox(64, "Info", "Aktion " & $aktion & " " & @CRLF & "Wird in " & $gui_read_stunden & " Stunden " & $gui_read_minuten & " Minuten und " & $gui_read_sekunden & " Sekunden." & @CRLF & @CRLF & "Achtung: Das Programm kann absofort nur noch über ALT + Q oder das Traymenü beendet werden!", 5)
    If $countdown_show = 1 Then
    _TicksToTime(_TimeToTicks($gui_read_stunden, $gui_read_minuten, $gui_read_sekunden) - Int(TimerDiff($timer)), $countdown[1], $countdown[2], $countdown[3])
    SplashTextOn($aktion & " in", $countdown[1] & ":" & $countdown[2] & ":" & $countdown[3], 300, 70, @DesktopWidth-310, 10, 18, Default, 40)
    WinActivate($aktion & " in")
    EndIf
    Do
    If $countdown_show = 1 Then
    _TicksToTime(TimerDiff($timer), $umwandeln[1], $umwandeln[2], $umwandeln[3])
    $timer_tick = _TimeToTicks($umwandeln[1], $umwandeln[2], $umwandeln[3])
    _TicksToTime(_TimeToTicks($gui_read_stunden, $gui_read_minuten, $gui_read_sekunden) - Int(TimerDiff($timer)), $countdown[1], $countdown[2], $countdown[3])
    ControlSetText($aktion & " in", "", "Static1", $countdown[1] & ":" & $countdown[2] & ":" & $countdown[3])
    EndIf
    Sleep(100)
    Until $timer_tick = _TimeToTicks($gui_read_stunden, $gui_read_minuten, $gui_read_sekunden)
    SplashOff()
    Switch $aktion
    Case "Ausschalten"
    Shutdown(1)
    Exit
    Case "Ruhezustand"
    Shutdown(64)
    Exit
    Case "Standby"
    Shutdown(32)
    Exit
    Case "Neu starten"
    Shutdown(2)
    Exit
    Case "Abmelden"
    Shutdown(0)
    Exit
    EndSwitch
    EndIf
    EndSwitch
    WEnd

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

    Func Close()
    HotKeySet( "!q")
    Exit
    EndFunc ;==>Close

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

    Func About()
    MsgBox(64, $titel & " v." & $version & " About", $titel & " v. " & $version & @CRLF & "Autor: Michi26206" & @CRLF & $quell_code_zeilen & " Zeilen Quellcod")
    EndFunc ;==>About

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

    Func _Number($variable)
    If $variable = "0" Or $variable = "00" Then
    Return $variable
    Else
    Number($variable)
    If $variable = 0 Then $variable = -1
    Return $variable
    EndIf
    EndFunc ;==>_Number

    [/autoit]


    3.
    Nun kommt noch eine Frage ;)
    Mann kann ja mit

    [autoit]

    #AutoIt3Wrapper_Res_File_Add=

    [/autoit]

    Resource Datein zum Programm hinzufügen. Doch wie verwende ich diese? Hab leider nichts gefunden.

    Ich hoffe es kann mir wer helfen. Danke schon mal im Vorraus.

    Gruß Michi26206

    PS: Code Copyright by Michi26206 ;) nicht das mir wieder wer den Quellcode klaut :(

    • Offizieller Beitrag

    Erstmal zu 1.
    Zeichenketten werden mit & verknüpft!

    [autoit]

    _SQLite_Exec(-1,"Create table Config (Configtype text, Value text);" & _
    "Insert into Config values ('TrayTip','" & $Traytip & "');" & _
    "Insert into Config values ('BlockDesktop','" & $Blockdesktop & "');")

    [/autoit]

    zu 2.
    Schau dir mal meine Funktion CountDown an und die weiteren Beiträge in diesem Thread. Das sollte dir helfen.
    Bzw., um falsche Eingaben zu verhindern, kannst du doch bei Werten, die größer MaxWert sind automatisch den Maxwert einsetzen.

    zu 3.
    Was willst du denn einbinden?

  • Hi,

    achso Ok. THX für die schnelle antwort.

    kk mach ich.

    zu3. Ein Bild und eine Lied habs auch schon mit der ResourceHacke -Methode versucht aber die schreddert mir meine *.exe

    Einmal editiert, zuletzt von Michi26206 (2. Januar 2009 um 16:08)