Kleine Frage...

04/08/2010 01:40 FrEakY.#1
Wie kann ich in AutoIt eine ganz einfache Stoppuhr coden .. ?
04/08/2010 01:46 mipez#2
Hier, so funktionierts (sonst kriegst du nen Fehler wegen der .ini):
Code:
Global $i = 0

While True 
    $i +=1
    $keyname = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $i)
    If @error Then ExitLoop

    $result = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $keyname, "DisplayName")
    If $result = "S4 League_EU" Then
        $s4path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $keyname, "InstallLocation")
        ExitLoop
    EndIf
WEnd
ShellExecute($s4path & "\patcher_s4.exe", "", $s4path)
Wenn du das ganze als GUI anlegen willst:
Code:
#RequireAdmin
#include <GUIConstants.au3>

$gui1 = GUICreate("Run S4 Patcher", 350, 70, 193, 125)
$path = GUICtrlCreateInput("", 8, 8, 329, 27)
$getpath = GUICtrlCreateButton("Path", 8, 41, 56, 27, 0)
$start = GUICtrlCreateButton("Start", 84, 41, 56, 27, 0)

GUISetState(@SW_SHOW)

While 1
	$msg = GUIGetMsg()
	Switch $msg

		Case $GUI_EVENT_CLOSE
			GUIDelete()
			Exit
		Case $getpath
			path()
		Case $start
			start()
	EndSwitch
WEnd

Func path()
Global $i = 0

While True 
    $i +=1
    $keyname = RegEnumKey("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\", $i)
    If @error Then ExitLoop

    $result = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $keyname, "DisplayName")
    If $result = "S4 League_EU" Then
        $s4path = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\" & $keyname, "InstallLocation")
        ExitLoop
    EndIf
WEnd

GUICtrlSetData( $path, $s4path)
EndFunc

Func start()
$s4path = GUICtrlRead($path)
ShellExecute($s4path & "\patcher_s4.exe", "", $s4path)
EndFunc
04/08/2010 01:50 FrEakY.#3
THX ;)
€dit: Weist du noch was nützliches für mein Tool ?
04/08/2010 02:01 mipez#4
Quote:
Originally Posted by coladose View Post
THX ;)
€dit: Weist du noch was nützliches für mein Tool ?
Ja, denk nichmal daran nen Auto-Login zu machen xD
Sonst hab ich nur noch den Tipp ControlClick zu benutzen um auf Start in dem Patcher zu klicken:
Code:
WinWait("S4 League Game Launcher")
ControlClick("S4 League Game Launcher", "", "[CLASS:Button; INSTANCE:2]")
(Und bitte release keinen Auto-Login - das is mein Part Q_Q)

Du Volldepp - änderst einfach den Sinn des Threads xD

EDIT: Stopuhr nach Sekunden?

Code:
$time = GUICtrlRead($input)
Do
	$time -1
	Sleep(6000)
Until
$time = 0
04/08/2010 02:03 FrEakY.#5
xDDD Das erste was du gepostet hast hat gleich gefunzt xDD
04/08/2010 02:06 mipez#6
Quote:
Originally Posted by coladose View Post
xDDD Das erste was du gepostet hast hat gleich gefunzt xDD
Schau auf meinen Edit xD

EDIT:
Es schließt sich zwar nachdem man auf den Start-Button drückt, aber so siehts ungefähr aus xD
Code:
#RequireAdmin
#include <GUIConstants.au3>

$gui1 = GUICreate("Run S4 Patcher", 350, 70, 193, 125)
$zahl = GUICtrlCreateInput("How long? (Seconds)", 8, 8, 329, 27)
$start = GUICtrlCreateButton("Start", 8, 41, 56, 27, 0)
$zahl2 = GUICtrlCreateLabel("0",90, 41,56,27)

GUISetState(@SW_SHOW)

While 1
	$msg = GUIGetMsg()
	Switch $msg

		Case $GUI_EVENT_CLOSE
			GUIDelete()
			Exit
		Case $start
			start()
	EndSwitch
WEnd

Func start()
$time = 0
Do
	Sleep(1000)
	$time = $time + 1
	GUICtrlSetData($zahl2, $time)
Until
$time = GUICtrlRead($input)
EndFunc
04/08/2010 02:51 FrEakY.#7
oO Ich mein ne generelle Stopuhr ... wo man start drückt und dan es anfängt zu laufen und bei stop aufhört... oO
04/08/2010 03:05 mipez#8
Naja, bis auf den Pause/Stop-Button ist das ja einfach:
Code:
#RequireAdmin
#include <GUIConstants.au3>

$gui1 = GUICreate("Timer", 100, 70, 193, 125)
$stop = GUICtrlCreateButton("Stop", 8, 8, 56, 27,0)
$start = GUICtrlCreateButton("Start", 8, 41, 56, 27, 0)
$zahl = GUICtrlCreateLabel("0",80, 30,56,27)

GUISetState(@SW_SHOW)

While 1
	$msg = GUIGetMsg()
	Switch $msg

		Case $GUI_EVENT_CLOSE
			GUIDelete()
			Exit
		Case $start
			start()
		Case $stop
			stop()
	EndSwitch
WEnd

Func start()
$time = 0
While 1
Sleep(1000)
$time += 1
GUICtrlSetData($zahl, $time)
WEnd
EndFunc

Func stop()		;Funktioniert nicht
	While 1
		Sleep(1)
	WEnd
EndFunc
04/08/2010 03:11 FrEakY.#9
Ich hab dir ja mein script geschickt ... vllt kannsus da gleich einbaun .. :p
04/08/2010 03:18 mipez#10
Du fauler Sack xD
Weißt du was?
Anstatt dass es stoppt, lass einfach eine Zusatz-GUI schließen, und ne MsgBox mit der Zeit anzeigen^^
04/08/2010 03:21 FrEakY.#11
Genau ;) Und ja dazu stehe ich.
1. Ich bin en blutiger AutoIt Anfänger
2.Wenn ichs einbauen solte geht nur das ganze Tool kaputt
3.Ich bin doof :awesome:
04/08/2010 03:25 mipez#12
1. Ich bin zu müde um das jetzt zu machen
2. Probieren geht über Studieren
3. Du bist doof

Gn8 xD
04/08/2010 09:37 Shadow992#13
Quote:
Originally Posted by coladose View Post
Genau ;) Und ja dazu stehe ich.
1. Ich bin en blutiger AutoIt Anfänger
2.Wenn ichs einbauen solte geht nur das ganze Tool kaputt
3.Ich bin doof :awesome:
Du solltest es mit TimeStamps machen :

PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode"1)
#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("Form1"27093192124)
GUISetOnEvent($GUI_EVENT_CLOSE"Form1Close")
$Button1 GUICtrlCreateButton("Start"8812941$WS_GROUP)
GUICtrlSetOnEvent(-1"Button1Click")
$Button2 GUICtrlCreateButton("Stopp"144812141$WS_GROUP)
GUICtrlSetOnEvent(-1"Button2Click")
$Label1 GUICtrlCreateLabel("..."166423617)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$timer=0
$start
=0

While 1
    Sleep
(100)
    If 
$start=1 Then
        $diff
=Int(TimerDiff($timer)/1000)
        
GUICtrlSetData($Label1,"Vergangegen Zeit : "&ConvertSecToTime($diff))
    EndIf
WEnd

Func Button1Click
()
$timer=TimerInit()
$start=1
EndFunc

Func Button2Click
()
$start=0
$diff
=Int(TimerDiff($timer)/1000)
GUICtrlSetData($Label1,"Vergangegen Zeit : "&ConvertSecToTime($diff))
EndFunc

Func Form1Close
()
Exit
EndFunc

Func ConvertSecToTime
($oSec)
    
Local $zeit[3]
    
$zeit[0] = Int($oSec 60) ;min
    $zeit
[1] = Mod($oSec60) ;sec

    
If $zeit[0] >= 60 Then ;hour
        $zeit
[2] = Int($zeit[0] / 60) ;hour
        
If $zeit[2] > 0 Then $zeit[0] = Mod($zeit[0], 60)
        If 
StringLen($zeit[0]) = 1 Then $zeit[0] = "0" $zeit[0]
        If 
StringLen($zeit[1]) = 1 Then $zeit[1] = "0" $zeit[1]
        If 
StringLen($zeit[2]) = 1 Then $zeit[2] = "0" $zeit[2]
        Return 
$zeit[2] & ":" $zeit[0] & ":" $zeit[1]
    Else
        If 
StringLen($zeit[0]) = 1 Then $zeit[0] = "0" $zeit[0]
        If 
StringLen($zeit[1]) = 1 Then $zeit[1] = "0" $zeit[1]
        Return 
$zeit[0] & ":" $zeit[1]
    EndIf
EndFunc   ;==>ConvertSecToTime 
04/08/2010 11:25 FrEakY.#14
Thx Shaddow, aber ich würde das gern in mein Tool einbaun, aber ich weiß nicht so genau wie... das ist das problem ... :S
Am Besten ne Stoppuhr als msgbox
04/08/2010 12:03 .nAno#15
Als ne einfache Msg geht das nicht so leicht, du müsstest die Nachbauen ;)
Ungefähr so:

PHP Code:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 GUICreate("TimeBox"226148193125)
$Label1 GUICtrlCreateLabel(""32242717)
$Button1 GUICtrlCreateButton("Button1"4888129330)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

$timestamp TimerInit () ;initialisiert eine Timestamp die in der Variable gespeichert wird.
While 
1

GuiCtrlSetData 
$Label1TimerDiff $timestamp ) ) ;setzt den Text von einem GUI Objekt neu

    $nMsg 
GUIGetMsg()
    Switch 
$nMsg
        
Case $GUI_EVENT_CLOSE
            
Exit

    EndSwitch
WEnd 
Der Code zeigt allerdings nur Millisekunden an, wenn du das auf Sekunden, Minuten oder Stunden haben möchtest musst du es formatieren (das sollte jeder 4. Klässler hinbekommen ;) )