hallo zusammen,
ich habe mir folgendes skript geschrieben:
Spoiler anzeigen
#include <GuiConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>
#include <Misc.au3>
HotKeySet("{NUMPAD9}", "On_Exit") ; only on desktop
[/autoit] [autoit][/autoit] [autoit]Global $SS_CENTER, $hGUI, $aRadio[5], $hButton, $res
Global $TimeTicks_d, $TimeTicks_b, $TimeTicks_ob, $TimeTicks_or, $TimeTicks_tb, $TimeTicks_tr, $TimeTicks
Global $_SecCalc_d, $_SecCalc_b, $_SecCalc_ob, $_SecCalc_or, $_SecCalc_tb, $_SecCalc_tr, $_SecCalc
Global $_Seconds_d, $_Seconds_b, $_Seconds_ob, $_Seconds_or, $_Seconds_tb, $_Seconds_tr, $_Seconds
Global $iAdlibTicks = 20
Global $aTimerStart[6] = [360, 420, 300, 300, 300, 300]
Global $iTimerCount = 6 ; Amount of Timers
Global $TimeLabel[$iTimerCount]
Global $aTimer[$iTimerCount]
Global $iFlashStartTicks = 21000 ; Timer lower than 20 seks
Global $iProgTimer = TimerInit()
Global $iCount
Global $TimerActive[$iTimerCount] = [False, False, False, False, False, False]
$hGUI = GUICreate("LJT", 150, 190)
[/autoit] [autoit][/autoit] [autoit]GUICtrlCreateLabel("Choose your resolution", 10, 10, 150, 20)
[/autoit] [autoit][/autoit] [autoit]GUIStartGroup()
For $i = 0 To 4
Local $res[5] = ["2560 x 1440", "1920 x 1080", "1600 x 900", "1280 x 720", "1024 x 768"]
$aRadio[$i] = GUICtrlCreateRadio($res[$i], 55, 30 + ($i * 20), 100, 20)
Next
GUICtrlSetState($aRadio[0], $GUI_CHECKED)
$hButton = GUICtrlCreateButton("Start Overlay", 35, 150, 80, 30)
[/autoit] [autoit][/autoit] [autoit]GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $hButton
GUISetState(@SW_HIDE, $hGUI)
For $i = 0 To 4
If GUICtrlRead($aRadio[$i]) = 1 Then
$res = $i
ExitLoop
EndIf
Next
Timer()
EndSwitch
WEnd
[/autoit] [autoit][/autoit] [autoit]; -------------
[/autoit] [autoit][/autoit] [autoit]Func Timer()
Local $pos[$iTimerCount][2] = [[1825, 990], [1738, 884], [1720, 929], [1788, 996], [1842, 945], [1772, 877]] ; Timer positions [[dx, dy], [bx, by], [obx, oby], [orx, ory], [tbx, tby], [trx, try]]
Local $color_code[$iTimerCount] = [0xFF00FF, 0xFF00FF, 0x00FF00, 0xFF0000, 0x00FF00, 0xFF0000] ; Timer color [d, b, ob, or, tb, tr]
Local $hRectangle_GUI = GUICreate("", @DesktopWidth, @DesktopHeight, 0, 0, $WS_POPUP, $WS_EX_TOOLWINDOW + $WS_EX_TOPMOST + $WS_EX_LAYERED + $WS_EX_TRANSPARENT)
Local $hMaster_Mask = _WinAPI_CreateRectRgn(0, 0, @DesktopWidth, @DesktopHeight)
For $i=0 To $iTimerCount - 1 ; Create timer, set font, set color
$TimeLabel[$i] = GUICtrlCreateLabel ( "", $pos[$i][0], $pos[$i][1], 20, 15, $SS_CENTER)
GuiCtrlSetColor(-1, $color_code[$i])
GUICtrlSetBkColor(-1, 0xABCDEF)
Next
GUISetBkColor(0xABCDEF)
_WinAPI_SetLayeredWindowAttributes($hRectangle_GUI, 0xABCDEF, 255)
GUISetState()
AdlibRegister('_Check', $iAdlibTicks)
AdlibRegister('_Pressed', $iAdlibTicks)
EndFunc
Func _Pressed ()
If _IsPressed('60') Then
_StartTimer(0)
Sleep(100)
ElseIf _IsPressed('6E') Then
_StartTimer(1)
Sleep(100)
ElseIf _IsPressed('61') Then
_StartTimer(2)
Sleep(100)
ElseIf _IsPressed('64') Then
_StartTimer(3)
Sleep(100)
ElseIf _IsPressed('63') Then
_StartTimer(4)
Sleep(100)
ElseIf _IsPressed('66') Then
_StartTimer(5)
Sleep(500)
EndIf
EndFunc
Func _Check ()
Local $aTicks[$iTimerCount]
Local $iTicks = TimerDiff($iProgTimer)
For $i = 0 To $iTimerCount - 1
$aTicks[$i] = ($iTicks - $aTimer[$i])
Next
For $i = 0 To $iTimerCount - 1
If $TimerActive[$i] Then
$iTicks = $aTimerStart[$i] * 1000 - $aticks[$i]
If $iTicks < $iFlashStartTicks Then
If $iTicks <= 0 Then
$TimerActive[$i] = not $TimerActive[$i]
$iTicks = 0
GUISetState(@SW_HIDE, $TimerActive[$i])
EndIf
EndIf
GUICtrlSetData($TimeLabel[$i], _MyTicksToTime($iTicks))
EndIf
Next
EndFunc
Func _MyTicksToTime($iTicks)
Local $sOut = StringRight(Int($iTicks/1000), 3)
Return $sOut
EndFunc
Func _StartTimer($iCount)
$TimerActive[$iCount] = not $TimerActive[$iCount]
GUISetState(@SW_SHOW, $TimerActive[$iCount])
If $TimerActive[$iCount] Then
$aTimer[$iCount] = TimerDiff($iProgTimer)
Else
GUICtrlSetData($TimeLabel[$iCount], '')
EndIf
EndFunc
Func On_Exit()
[/autoit] [autoit][/autoit] [autoit]Exit
[/autoit] [autoit][/autoit] [autoit]EndFunc
[/autoit]was das skript tut ist folgendes:
1) gui startet in der man eine auflösung auswählt (für meine frage uninteressant, und für spätere funktionen vorgesehen)
2) dann wird ein transparentes und nicht anklickbares overlay erstellt
3) durch klicken der tasten numblock 0,1,3,4,6,komma können timer in der
rechten unteren bildschirmecke gestartet werden. (diese funktion wurde
über "_IsPressed" und nicht über einen hotkeyset realisiert, da die
timer sonst falls eine anwendung die selben hotkeys benutzt nicht gestartet werden können
probiert das skript am besten einfach mal aus, dann werdet ihr merken
was ich genau mit dem timerflackern und der trägen antwort auf die
tasteneingaben meine.
hoffe ihr könnt mir helfen. Sinn soll es sein mit dem skript timer zu starten die dann runterzählen bis auf 0 und dann verschwinden
und sich bei nochmaligem drücken erneuern (bis auf die oben genannten
probleme funktioniert das auch)
viele grüße
63rrit