Zeit zurück rechnen

03/01/2010 13:29 muse-#1
Cheers epvpers

Habe grad aus Langeweile einen iTunes Wecker geschrieben,da mein PC des öfteren über Nacht anbleibt,nun habe ich folgendes Problem
Ich habe im Interface zwei Inputs
1.Minuten
2.Stunden
ER rechnet halt ganz normal und dann führt er halt den skript aus

Quote:
$Time = GUICtrlRead($Input2) * 3600000 + GUICtrlRead($Input1) * 60000
Sleep($Time)
Nun möchte ich aber nicht jedesmal rechnen wie lang er denn braucht bis es z.b. 6 uhr ist.
Sondern möchte gleich 6 Uhr eingeben und er soll halt warten bis die Zeit erreicht ist
1.Ist das überhaupt möglich?
2.Wenn ja,natürlich wie?

danke euch im Vorraus!
03/01/2010 13:34 KDeluxe#2
PHP Code:
If @HOUR GUICtrlRead($InputZeitThen MsgBox(64"Zeit""Es ist " & @HOUR " Uhr."
MsgBox(64"Zeit""Es ist " GUICtrlRead($InputZeit) & " Uhr."
03/01/2010 14:14 muse-#3
mh okay hilft mir jetzt nur wenig weiter
Könntest du mir ein Beispiel geben oder den dierekten Ansatz,wie ich das hier verwenden könnte
Ich frage mich nur wie der Skript durch das @HOUR jetzt wissen soll wann genau er starten soll. :/
03/01/2010 14:28 KDeluxe#4
PHP Code:
MsgBox(64"Uhrzeit""Es ist " & @HOUR ": " & @MIN ": " & @SEC " Uhr"
Gibt die Uhrzeit zurück, für dich sollte aber eigentlich nur @HOUR wichtig sein (vielleicht auch noch @MIN).

Umsetzen kannst du das etwa so:
PHP Code:
$GUI GUICreate(""14334)
GUICtrlCreateLabel("MsgBox um:"10106217)
$I_HOUR GUICtrlCreateInput("14"7582221)
GUICtrlCreateLabel(":"10010717)
$I_MIN GUICtrlCreateInput("30"11282221)
GUISetState(@SW_SHOW)

While 
True
    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case -3
            
Exit
    EndSwitch
    If @
HOUR GUICtrlRead($I_HOUR) And @MIN GUICtrlRead($I_MINThen MsgBox(64"Info""Jetzt könnte auch etwas geschrieben werden")
WEnd 
03/01/2010 14:43 muse-#5
ah okay ich habs ,denk ich
nur eine Frage,wahrscheinlich relativ simpel
wie setzte ich jetzt den Sleep Befehl an

Ansatz:
Quote:
If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1) Then
Sleep(XXX)
03/01/2010 14:49 KDeluxe#6
Um zu verhindern, dass die ganze Minute lang der Befehl ausgeführt wird kannst du einfach noch ein @SEC = 0 hinzufügen, dass mit dem Sleep geht so:
Code:
If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1)[COLOR="Green"] And @SEC = 0[/COLOR] Then
	$Sleep = 1 * 1000 ; 1 Sekunde
	Sleep($Sleep)
EndIf
03/01/2010 14:58 muse-#7
achsoo und eine sekunde reicht damit er nicht nochmal weiter macht?
Weil wenn sagen wir es 06:00 starten soll wartet er ja nur eine Sekunde,dann ist es ja aber immer noch 06:00 sollte er dann nicht lieber eine Minute warten?

cheers (:
03/01/2010 15:08 KDeluxe#8
Die Zeit ist einmalig, was davor und danach kommt wird ignoriert (außer man würde etwas addieren)
03/01/2010 15:12 muse-#9
noch eine sache fix

Quote:
func go ()
If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1) And @SEC = 0 Then
$Sleep = 1 * 1000 ; 1 Sekunde
Sleep ($Sleep)
EndIf
run ("C:\Programme\iTunes\iTunes.exe")
wie schaffe ich das er jetzt so lange wartet und dann erst Itunes startet?
03/01/2010 17:41 HardCore.1337#10
In eine Endlosschleife (While-WEnd) setzen ;)
03/01/2010 17:45 muse-#11
ja soweit hab ich es auch schon
problem ist irgendwie nur das nix passiert : p

Quote:
While 1
If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1) And @SEC = 0 Then
$Sleep = 1 * 1000
Sleep ($Sleep)
EndIf
run ("C:\Programme\iTunes\iTunes.exe")
...
WEnd
es passiert rein garnichts o:
was mach ich denn jetzt falsch?
03/01/2010 17:45 KDeluxe#12
Code:
While True
	go()
WEnd

Func go()
	If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1) And @SEC = 0 Then
		ShellExecute("iTunes.exe", "", @ProgramFilesDir & "\iTunes\") ;ShellExecute("iTunes.exe", "", "C:\Programme\iTunes\")
	EndIf
EndFunc
Edit
Du müsstest das "Run" vor dem EndIf schreiben
03/01/2010 18:06 muse-#13
danke euch
aber es will imemr noch nicht

ich post mal nen größeren auszug

Quote:
While 1
If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1) And @SEC = 0 Then
$Sleep = 1 * 1000
Sleep ($Sleep)
run ("C:\Programme\iTunes\iTunes.exe")
sleep (8000)
Send ("{TAB}")
...
EndIF
WEnd
03/01/2010 18:54 KDeluxe#14
PHP Code:
While True
    
If @HOUR GUICtrlRead($Input2) And @MIN GUICtrlRead($Input1) And @SEC 0 Then
        ShellExecute
("iTunes.exe""""C:\Programme\iTunes") ; Run("C:\Programme\iTunes\iTunes.exe")
        
WinWait("iTunes")
        ; If 
WinExists("iTunes"Then WinActivate("iTunes")
        
Send ("{TAB}")
        ;...
    EndIF
WEnd 
Vielleicht liegt der Fehler auch weiter unter?
03/01/2010 20:00 muse-#15
okay es geht imemr noch nicht ich schick euch jetzt mal den verdammten skript durch,das gibts doch nicht >.>

Quote:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\pwn_age55\eigene dateien\koda forms\ituneswecker.kxf
$Form1_1 = GUICreate("Itunes Wecker", 357, 205, 647, 414)
$Button1 = GUICtrlCreateButton("Start", 136, 152, 73, 33, 0)
$Button2 = GUICtrlCreateButton("beenden", 256, 184, 73, 17, 0)
$Input1 = GUICtrlCreateInput("", 104, 64, 33, 21)
$Input2 = GUICtrlCreateInput("", 40, 64, 41, 21)
$Label1 = GUICtrlCreateLabel("Minuten", 104, 48, 42, 17)
$Label2 = GUICtrlCreateLabel("Stunden", 40, 48, 44, 17)
$Input3 = GUICtrlCreateInput("", 216, 64, 121, 21)
$Label3 = GUICtrlCreateLabel("Lied", 264, 48, 24, 17)
$Group1 = GUICtrlCreateGroup("Zeit", 16, 16, 161, 113)
$Label4 = GUICtrlCreateLabel(":", 88, 56, 10, 33)
GUICtrlSetFont(-1, 18, 400, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Song Auswahl", 200, 16, 153, 113)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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



While 1
If @HOUR = GUICtrlRead($Input2) And @MIN = GUICtrlRead($Input1) And @SEC = 0 Then
$Sleep = 1 * 1000
Sleep ($Sleep)
run ("C:\Programme\iTunes\iTunes.exe")
sleep (8000)
WinSetState("iTunes", "", @SW_MAXIMIZE)
sleep (1000)
send ("{TAB}")
sleep (1000)
Send("{BACKSPACE}")
sleep (1000)
send (GUICtrlRead ($Input3))
sleep (1500)
send ("{TAB}")
sleep (1500)
send ("{TAB}")
sleep (1500)
send ("{ENTER}")
EndIf
WEnd
die sleep zeiten sind für warte zeite,ja ich könnte auch winwait nehmen
aber kb o: