Hy
ich möchte ein Programm schreiben was einen Counter runter laufen lassen soll (30min, diese auch anzeigt) und dann ein Programm startet und dann wieder von vorne anfängt zu zählen.
thx
Hy
ich möchte ein Programm schreiben was einen Counter runter laufen lassen soll (30min, diese auch anzeigt) und dann ein Programm startet und dann wieder von vorne anfängt zu zählen.
thx
guck dir mal die countdown.au3 von bugfix an!
müsstest du mit der suchfunktion finden
hab noch mal den link besorgt : countdown.au3
thx aber wie schaff ich das das die Zahl in einem Label angezeigt wird?
Hallo!
GuictrlsetData()
Sollte gehen .. =)
Lenny
genau einfach mit dem gefehle guictrlsetdata()
also du musst die zahl in eine variable schreiben wenn sie sich ändern soll da du ja von einem countdown spricht. das guictrlsetdata befehl sieht dann folgendermaßen aus:
guictrlsetdata($deinlabel,$deinezahl)
[/autoit]Also hab ein bischen anders gelöst vll nicht das beste aber es geht auch so halbwegs.
Nun wüsste ich aber noch gern wie ich das Programm schließen kann wenn ich auf das "x" klicke. (weiß nicht wo ich jetzt "If $msg = $GUI_EVENT_CLOSE Then ExitLoop" oder ähnliches einfügen soll)
#include <GuiConstants.au3>
GUICreate("", 100, 50)
$i = 30
$i2 = 60
$min = GUICtrlCreateLabel("29", 10, 10)
GUICtrlCreateLabel(":", 25, 10)
$sec = GUICtrlCreateLabel("59", 30, 10)
GUISetState()
While 1
$MSG = GUIGetMsg()
While $i > 0
While $i2 > 0
$i2 = $i2 -1
GuictrlsetData($sec, $i2)
Sleep(1000)
WEnd
$i2 = 59
$i = $i -1
GuictrlsetData($min, $i)
Sleep(1000)
WEnd
WEnd
Auch wüsst ich gern wie wie ich das Programm ganz unten rechts in die Ecke bekomme.
thx
sowas in der art....
HotKeySet("{ESC}","ex")
Global $TIME
Const $ar_time_choose[6] = [1,60,3600,86400,2592000,31536000]
#include <GUIConstants.au3>
#include <GuiCombo.au3>
$Form1 = GUICreate("Counter",180,200)
$auswahl = GUICtrlCreateCombo("Zeitauswahl", 8, 10, 147, 25)
GUICtrlSetData(-1,"Sekunden")
GUICtrlSetData(-1,"Minuten")
GUICtrlSetData(-1,"Stunden")
GUICtrlSetData(-1,"Tage")
GUICtrlSetData(-1,"Monate(30 Tage)")
GUICtrlSetData(-1,"Jahre (365 Tage)")
$TIME = GUICtrlCreateInput("Zeit eingeben.", 8, 40, 147, 25)
$start = GUICtrlCreateButton("Start",10,70,147,25)
$counter = GUICtrlCreateLabel("Please Wait....", 10, 110, 147, 25)
GUISetState(@SW_SHOW)
While 1
;GUICtrlSetData($counter,$TIME-$i)
;Sleep(100)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $start
If GuiCtrlRead($TIME) = "Zeit, die heruntergezählt werden soll." Or GuiCtrlRead($TIME) <= 0 Then
MsgBox(48,"Ungültige Zeit.","Bitte geben Sie eine gültige Zeit ein.")
ElseIf GuiCtrlRead($auswahl) = "Zeitauswahl" Then
MsgBox(48,"Ungültige Zeit.","Bitte geben Sie eine gültige Zeit ein.")
Else
MsgBox(64,"Hinweiß","Zum beenden bitte Escape drücken.")
$i = 0
Do
GUICtrlSetData($counter,"Zeitverbleibend:"&@CRLF&((GUICtrlRead($TIME)*$ar_time_choose[_GUICtrlComboGetCurSel($auswahl)-1])-$i)&" Sekunden")
$i = $i+1
Sleep(1000)
Until ((GUICtrlRead($TIME)*$ar_time_choose[_GUICtrlComboGetCurSel($auswahl)-1])-$i) < 0
EndIf
EndSwitch
WEnd
Func ex()
Exit
EndFunc
grad mal selbste gebastelt....hatte langeweile..zwar nicht der sinn und zweck anderen zu helfen aber grad mal egal^^
snoozy
Leider bringt mir dein Script nix weil die 30 min konstant bleiben.
Jetzt steh ich gerade vor mehreren Problemen z.B.
mit welchem Befehl kann ich das regeln das ich das Program auch während es runterzählt mit einem Klick auf "x" beenden kann oder
wie kann ich ein neues GUI Fenster erstellen in dem ich auch Anweisungen ausführen kann.
thx
ZitatOriginal von Masterraven9
...
Jetzt steh ich gerade vor mehreren Problemen z.B.
mit welchem Befehl kann ich das regeln das ich das Program auch während es runterzählt mit einem Klick auf "x" beenden kann oder
wie kann ich ein neues GUI Fenster erstellen in dem ich auch Anweisungen ausführen kann.
thx
Das geht nicht.
Während die Zeitsetzung läuft bist du in der Schleife 'gefangen'.
Andere Ereignisse lassen sich erst abfragen, wenn die Schleife beendet ist.
Ein zeitgleiches Ausführen eines anderen Fensters geht ebenfalls nicht - AutoIt ist nicht multithreadfähig.
Hi!
TimerStart und TimerDiff sind die Lösung, denke ich - etwas aufwändiger, aber machbar.
peethebee
Hi,
oder halt adlibenable.
So long,
Mega
Also ich habs jetzt mal mit AdlibEnable versucht versteh es aber nicht so ganz
#include <GuiConstants.au3>
GUICreate("test", 200, 150)
$i = 59
$i2 = 29
AdlibEnable("sec",1000)
[/autoit] [autoit][/autoit] [autoit]func sec()
IF $i = 0 Then
$i = 59
EndIf
$i = $i-1
EndFunc
AdlibEnable("min",1800000)
[/autoit] [autoit][/autoit] [autoit]func min()
IF $i2 = 0 Then
$i2 = 29
EndIf
$i2 = $i2-1
EndFunc
GUICtrlCreateLabel($i2, 10, 10)
GUICtrlCreateLabel(":", 25, 10)
GUICtrlCreateLabel($i, 35, 10)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
$MSG = GUIGetMsg()
If $MSG = $GUI_EVENT_CLOSE Then ExitLoop
WEnd
Ich hab hier mal Bugfix' Counter.au3 auf Adlibenable geändert, Ich hoffe, das ist OK:
;#### BEISPIEL ####
#region --- GuiBuilder code Start ---
; Script generated by AutoBuilder 0.6 Prototype
#include <GuiConstants.au3>
#include <CountdownAdlib.au3>
GuiCreate("MyGUI", 392, 317,-1, -1 , BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS))
[/autoit] [autoit][/autoit] [autoit]$Label_1 = GuiCtrlCreateLabel("Label1", 80, 100, 200, 70)
[/autoit] [autoit][/autoit] [autoit]GuiSetState()
_CountDown(10,0,0,0,True,$Label_1)
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case Else
;;;
EndSelect
WEnd
Exit
#endregion --- GuiBuilder generated code End ---
;#### BEISPIEL ENDE ####
[/autoit] [autoit][/autoit] [autoit];#### CountdownAdlib.au3 ####
[/autoit] [autoit][/autoit] [autoit];----------------------------------------------------------------------------------------------------------------------
; Funktion _CountDown($SEC [, $MIN=0 [, $HOUR=0 [, $DAY=0 [, $VISIBLEDOWN=True [, $ALTERNATECTRL='TT']]]]])
;
; Beschreibung zählt vorgegebene Zeitspanne (Tage, Stunden, Minuten, Sekunden) herunter mit Anzeige Tooltip (Standard)
; oder Ausgabe in GUI-Ctrl; wahlweise Anzeige von Restzeit (Standard) oder abgelaufener Zeit
;
; Parameter $SEC: Sekunden
; optional $MIN: Minuten
; optional $HOUR: Stunden
; optional $DAY: Tage
; optional $VISIBLEDOWN: Ansicht (herunterzählen/heraufzählen)
; optional $ALTERNATECTRL: GUI-Ctrl in das die Ausgabe mittels GUICtrlSetData() ausgegeben wird
;
; Erfordernisse #include <Date.au3>
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
;----------------------------------------------------------------------------------------------------------------------
#include <Date.au3>
Global $_CountDown_Sekunden
Global $_CountDown_end
Global $_CountDown_VISIBLEDOWN
Global $_CountDown_ALTERNATECTRL
Func _CountDown($SEC, $MIN=0, $HOUR=0, $DAY=0, $VISIBLEDOWN=True, $ALTERNATECTRL='TT')
Global $_CountDown_Sekunden = $SEC + $MIN*60 + $HOUR*3600 + $DAY*86400
Global $_CountDown_end = _DateAdd('s', $_CountDown_Sekunden, _NowCalc())
Global $_CountDown_VISIBLEDOWN = $VISIBLEDOWN
Global $_CountDown_ALTERNATECTRL = $ALTERNATECTRL
AdlibEnable("_Counter",300)
EndFunc ;==>_CountDown
;----------------------------------------------------------------------------------------------------------------------
; Funktion _Counter
; Wird von _CountDown mit AdlibEnable aufgerufen, um
;
; Autor BugFix ([email='bugfix@autoit.de'][/email])
; aufgeteilt auf 2 Funktionen für AdLib von Prog@ndy
;----------------------------------------------------------------------------------------------------------------------
Func _Counter()
Local $message
$sec = _DateDiff('s', _NowCalc(), $_CountDown_end)
If Not $_CountDown_VISIBLEDOWN Then
$secShow = $_CountDown_Sekunden - $sec
Else
$secShow = $sec
EndIf
Select
Case $secShow < 60
If $_CountDown_ALTERNATECTRL = 'TT' Then
ToolTip(StringFormat('%02u', $secShow) & ' s')
Else
GUICtrlSetData($_CountDown_ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
EndIf
Case $secShow < 60*60
$message = StringFormat('%02u', Floor($secShow/60)) & ':' & _
StringFormat('%02u', Mod($secShow,60)) & ' min'
If $_CountDown_ALTERNATECTRL = 'TT' Then
ToolTip($message)
Else
GUICtrlSetData($_CountDown_ALTERNATECTRL, $message)
EndIf
Case $secShow < 60*60*24
$message = StringFormat('%02u', Floor($secShow/3600)) & ':' & _
StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
If $_CountDown_ALTERNATECTRL = 'TT' Then
ToolTip($message)
Else
GUICtrlSetData($_CountDown_ALTERNATECTRL, $message)
EndIf
Case Else
$message = Floor($secShow/86400) & ' d / ' & _
StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
If $_CountDown_ALTERNATECTRL = 'TT' Then
ToolTip($message)
Else
GUICtrlSetData($_CountDown_ALTERNATECTRL, $message)
EndIf
EndSelect
If $sec <= 0 Then AdlibDisable()
EndFunc