Naja die Millisekunden in Stunden/Minuten/Sekunden umrechnen sollte doch einfach sein.
Musst eben vergleichen wieviel ms liefert Timerdiff()? Wieviel ms passen in eine Stunde? Wieviel in eine Minute? usw.
Beiträge von nuts
-
-
-
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 432, 623, 192, 132)
$List1 = GUICtrlCreateList("", 24, 72, 209, 310)
GUICtrlSetData(-1, "Listbox Eintrag")
$Label1 = GUICtrlCreateLabel("Hallo", 24, 8, 205, 52)
$Button1 = GUICtrlCreateButton("Label lesen", 25, 400, 97, 25, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Listbox lesen", 136, 400, 97, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###While 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $Button1
$labeldata = GUICtrlRead($Label1) ; Label lesen und in eine Variable speichern
msgbox(32+0, "Labeltext", $labeldata)
case $Button2
$listboxdata = GUICtrlRead($List1) ;markiertes Listboxitem lesen und in eine Variable speichern
msgbox(32+0, "Listboxtext", $listboxdata)
EndSwitch
WEndGanz einfaches Bsp.
Außerdem könnt ihr euch die Beispiele in der Hilfe ansehen.
http://wiki.autoit.de/wiki/index.php/Tutorial hier steht auch ein wenig zu Gui's. -
Sowas funktioniet am besten mit AdlibEnable
Hier mal ein kommentiertes Beispiel (glaube von Oscar):
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>Global $iCounterStart = 10 ; hier den Startwert in Sekunden angeben
[/autoit] [autoit][/autoit] [autoit]
$iCounterStart *= 10 ; zum anzeigen der Zehntelsekunden mit 10 multiplizieren
Global $iCounter = $iCounterStart ; der Countervariable den Startwert zuweisen
Global $bStartStop = False ; boolesche Variable für Start/Stop AbfrageGlobal $hGui = GUICreate('Countdown-Timer', 600, 100) ; Fenster erstellen (Größe = 600x100 Pixel)
[/autoit] [autoit][/autoit] [autoit]
Global $hProgressbar = GUICtrlCreateProgress(10, 10, 580, 20) ; Progressbar erstellen
GUICtrlSetData(-1, 100) ; den Wert für die Progressbar auf 100% setzen
Global $hDisplay = GUICtrlCreateLabel(StringFormat('%.1f', $iCounter / 10) & ' sek.', 20, 40, 60, 20) ; die Sekundenanzeige erstellen
Global $hReset = GUICtrlCreateButton('Reset', 10, 70, 70, 20) ; "Reset"-Button erstellen
Global $hStart = GUICtrlCreateButton('Start', 90, 70, 70, 20) ; "Start"-Button erstellen
GUISetState() ; das Fenster anzeigen
While True ; Endlosschleife starten
Switch GUIGetMsg() ; abfragen, ob eine Benutzereingabe erfolgte
Case $hReset ; wenn der Reset-Button angeklickt wurde
AdlibDisable() ; die zeitgesteuerte Funktion beenden
$iCounter = $iCounterStart ; den Counter wieder auf den Startwert setzen
$bStartStop = False ; die Start/Stop-Variable zurücksetzen
GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; die Sekundenanzeige stellen
GUICtrlSetData($hProgressbar, 100) ; Progressbar wieder auf 100%
GUICtrlSetData($hStart, 'Start') ; den Start-Button wieder mit dem Text "Start" belegen
GUICtrlSetState($hStart, $GUI_ENABLE) ; den Start-Button wieder freigeben
Case $hStart ; wenn der Start-Button angeklickt wurde
$bStartStop = Not $bStartStop ; Start/Stop-Variable invertieren (aus False wird True und umgekehrt)
Switch $bStartStop ; wenn der Wert der Start/Stop-Variablen...
Case True ; =True, dann...
GUICtrlSetData($hStart, 'Pause') ; den Start-Button mit dem Text "Pause" belegen
AdlibEnable('_Countdown', 100) ; die Funktion "_Countdown" alle 100ms aufrufen
Case False ; =False, dann...
GUICtrlSetData($hStart, 'Weiter') ; den Start-Button mit dem Text "Weiter" belegen
AdlibDisable() ; die zeitgesteuerte Funktion beenden
EndSwitch
Case $GUI_EVENT_CLOSE ; wenn der Schließen-Button angeklickt oder [ESC] gedrückt wurde
Exit ; Programm verlassen
EndSwitch
If $iCounter <= 0 Then ; wenn der Counter Null erreicht hat, dann...
AdlibDisable() ; die zeitgesteuerte Funktion beenden
$iCounter = 1 ; den Counter auf 1 setzen, damit diese If...Then-Anweisung nur einmal ausgeführt wird
GUICtrlSetState($hStart, $GUI_DISABLE) ; den Start-Button sperren (reagiert nicht mehr auf Mausklicks)
MsgBox(0, 'Countdown-Timer', 'Zeit um!') ; Eine Meldung ausgeben
EndIf
WEndFunc _Countdown()
[/autoit]
$iCounter -= 1 ; den Counterwert um 1 verringern
GUICtrlSetData($hProgressbar, Int(100 / $iCounterStart * $iCounter)) ; den neuen Wert in der Progressbar anzeigen
GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; und als Sekundenwert darstellen
EndFunc ;==>_Countdown -
Ist leider ziemlich unverständlich formuliert.
Was ist eigentlich dein Ziel? Einfach ein Countdown? Dazu bräuchte man kein _Timer_SetTimer. -
Hey,
kleinen Bug gefunden: Drückt man auf "Playlist Random Sort" ohne ein Item in der Playlist bricht das Prog. mit einer Fehlermeldung (Array Variable has incorrect number of .. usw) ab. Fehlt an dieser Stelle (Zeile 747 wenn ich das richtig sehe)) das @errorhandling bzw. ein IsArray.
-
Interessant. Also kann man das msdn verwenden und anhand der Parameter untersuchen welche Möglichkeiten Autoit bietet.
Im konkreten Bsp. bleibt es dann bei einem Durchlauf für .exe, einem für .txt und einem für .dll.
Bzw. alternativ erstmal alle einlesen und die überflüssigen eleminieren.
Oder übersehe ich da was?
-
Hey,
mich würde mal interessieren ob man die Grundfunktionen von Autoit verändern kann.
Bzw. sind die Vorgehensweisen dokumentiert?Ein Beispiel: Man möchte alle .txt, .exe und .dll Dateien in einem Verzeichnis auflisten.
Um das zu optimieren wäre es interessant mal zu sehen wie Findfirstfile dabei arbeitet.Gruß nuts
-
Hier schau mal: http://progandy.co.cc/index.php/comp…/id,24/lang,de/
Ich weiss aber nicht wie das genau umzusetzen ist oder ob du sowas überhaupt suchst.
Um einfach Variablen an ein Skript zu übergeben erscheint mir das auch etwas überdimensioniert.Funktionen aufrufen kannst du z.B. so:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
Global $eventCount = 0
$Form1 = GUICreate("nuts", 633, 454, 193, 115)
GUICtrlCreateButton("Nuts", 10, 10)
GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
GUISetState(@SW_SHOW)GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")
[/autoit] [autoit][/autoit] [autoit]
While 1
Sleep(100)
WEndFunc _ende()
[/autoit] [autoit][/autoit] [autoit]
Exit
EndFuncFunc WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Local $hWndFrom, $iIDFrom, $iCode, $hWndEdit
$hWndFrom = $ilParam
$iIDFrom = BitAND($iwParam, 0xFFFF) ; Low Word
$iCode = BitShift($iwParam, 16) ; Hi Word
Return $GUI_RUNDEFMSG
EndFunc ;==>WM_COMMAND#cs erklärung msg
[/autoit]
WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
$hWnd ; - Handle des Fensters, das die Nachricht bringt
$iMsg ; - die Nachricht
$iwParam ; - DWORD-Wert
; Lo = ID des Ctrl, das die Nachricht bringt
; Hi = Code der Nachricht
$ilParam ; - Handle des Ctrl, das die Nachricht bringt
#ce
Die Fremdsoftware (zweites Skript) muss dann eine WM_Command Message an das entsprechende Fenster schicken. -
[autoit]
_GUICtrlListBox_GetCurSel
[/autoit]
So
-
[ gelöst ] Variablen zwischen 2 Scripten hilft dir das?
-
Was ist denn dein Ziel?
Das Fremdprogramme dein Prog. ansprechen können oder? -
Blöderweise lassen sich keine TV-Geräte (zumindest keine Samsung) damit steuern. Sonst könnte man super einen Sleeptimer basteln. Jemand ne Ahnung woran das liegt?
-
Dazu gibt es glaube ich eine UDF von Progandy.
Das ist aber alles anderes als trivial, würde es über Sendmessage nicht auch gehen?
Interessant wäre es trotzdem mal
-
Wie wärs mit Hotkeyset?
-
Zum Vergleichen gibts auch ne tolle UDF von Bugfix: Schnittmengen und Differenzmengen ermitteln
-
Hey,
naja stundenlang musste dich dafür nicht hinsetzen

Sollte es irgendwann doch mal soweit sein, hoffe ich doch das Skript wird den Weg ins Forum finden?Morgen bastel ich noch die Reg. -Tweaks und einen Bezug zur tatsächlichen Spaltenbreite ein.
Für den Firefox müsste man dann wieder andere Reg.-Änderungen vornehmen (oder gibts dafür eine elegantere Lösung?), ich denke das kann dann jeder selbst einbauen. -
Hey,
hier gibt es aber viele, wie mich z.B., die mit Autoit angefangen haben und gar keine Hochsprache beherrschen.
D.h. ein Projekt scheitert, da Autoit zu langsam ist oder man findet eine entsprechende .dll zum Auslagern.
Darum ists doch super, dass Autoit die Möglichkeit dazu gibt und es viele Pro's gibt die entsprechende Anwendungen frei verfügbar machen.Es bleibt der einfache Aufbau mit Autoit und der Speed der .dll
Einziger Nachteil: Man muss eine entsprechende Datei zum Auslagern finden. -
Also es gibt doch ein Möglichkeit die Url usw. zu entfernen!
Dazu müssen bestimmte Reg.-Schlüssel geändert werden:Hkey_Current_User\Software\Microsoft\Internet Explorer\PageSetup
Dort den Wert für "footer" & "header" entfernen.Kann man sich per Autoit ins Skript einbauen und nach dem Drucken zurücksetzen (oder so ähnlich).
-
Hehe also ein absichtlicher Bug?
Einmal in der Falle muss das ganze Spiel beendet werden, sowas kann doch nicht im Sinne des Erfinders sein?
Die "Falle" ist schon witzig, nur sollte Mario dann irgendwann "sterben" (hört sich blöd an der Satz
).