Jump to content

Recommended Posts

@alexandre Muito bom esse exemplo

Fiz um contador (criando do meu jeito porém seguindo a lógica do video) e adicionei a opção de reiniciar o contador.

Mas quando o contador é reiniciado o tempo começa com 2 segundos a menos

#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.14.5
 Author:         Rodrigo Chaves

 Script Function:
    Timer
    11/2019

#ce ----------------------------------------------------------------------------

#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPISys.au3>
#include <Misc.au3>

;Forca a execucao de apenas uma instancia
If _Singleton(@ScriptName, 1) = 0 Then Exit

;/Variaveis controle / tempo
Dim $sCreditos = 1
Dim $sHoras, $sMinutos, $sSegundos = 0
;//

;/Paleta de cores
Dim $iColor_Text = 0xFFFFFF ;White
Dim $iColor_Background = 0x252525 ;Dark
;//

;Controle de exibicao da GUI e controle
Dim $iShowGUI = 'Bottom' ;Top / Bottom
Dim $sShow, $bContinue = True

;Dimensao da GUI
Dim $iW = 200, $iH = 70

;GUI
Dim Const $hWnd_Main = GUICreate("Timer", $iW, $iH, -1, -1, $WS_POPUPWINDOW, $WS_EX_TOPMOST)
;Define a cor da GUI
GUISetBkColor($iColor_Background)
;Coleta as dimensoes e posicao da gui
$aGetPos = WinGetPos($hWnd_Main)
;Label Timer
$sLabel_Timer = GUICtrlCreateLabel("--:--:--", 0, 0, $aGetPos[2] - 1, 70, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 34, 400, 0, "Segoe UI")
GUICtrlSetColor(-1, $iColor_Text)
;Label mensagem
$sLabel_Aguarde = GUICtrlCreateLabel(" Aguarde. . .", 0, 55, $aGetPos[2] - 1, 17, $SS_CENTERIMAGE)
GUICtrlSetFont(-1, 8, 400, 0, "Segoe UI")
GUICtrlSetColor(-1, $iColor_Text)

;Configura a visualizacao da GUI
If $iShowGUI = 'Bottom' Then
    ;Move a GUI para perto do tray
    moveToTaskbar($hWnd_Main)
ElseIf $iShowGUI = 'Top' Then
    GUICtrlSetPos($hWnd_Main, 0, 0, $iW, $iH)
EndIf

;Aplica efeito de entrada pela direita
_WinAPI_AnimateWindow($hWnd_Main, 0x00040002, 350)
GUISetState(@SW_SHOW)

;Configura tecla de atalho
HotKeySet('{ESC}', '_Quit')
;Registra a funcao _Clock
AdlibRegister('_Clock', 1000)

Do
    ;Calculo do tempo
    _CoreClock()
    $iQuestion = MsgBox(262144+32+4, 'O tempo acabou', 'Deseja reiniciar o contador?', 60)
    If $iQuestion  = 6 Then
        $idInput_Time = InputBox('Timer', 'Insira a quantidade de créditos', 1, '', -1, -1, Default, Default, 60, $hWnd_Main)
        ;Verifica se algo foi informado
        If $idInput_Time <> '' Then
            ;Verifica se eh um caracter numerico
            If StringIsDigit($idInput_Time) Then
                $sCreditos = $idInput_Time
                _CoreClock()
                $bContinue = True
            Else
                MsgBox(262144+64, 'Timer', 'Informações inválidas', 10)
                $bContinue = False
            EndIf
        EndIf
    Else
        $bContinue = False
    EndIf
Until $bContinue = False

;Aguarda para zerar o relogio
Sleep(1000)
;Cancela o registro da funcao _Clock
AdlibUnRegister('_Clock')
;Exibe mensagem
GUICtrlSetData($sLabel_Aguarde, ' Concluido  Pressione Esc para fechar')

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            _Quit()

    EndSwitch
WEnd

;Contador do tempo
Func _Clock()
    $sSegundos -= 1
    GUICtrlSetData($sLabel_Timer, $sShow)
    If GUICtrlRead($sLabel_Aguarde, 1) <> '' Then GUICtrlSetData($sLabel_Aguarde, '')
EndFunc

;Calculo do tempo
Func _CoreClock()
    Do 
        $sSegundos += $sCreditos * 60
        $sMinutos = Mod($sSegundos / 60, 60)
        $sHoras = $sSegundos / 3600
        $sCreditos = 0
        $sShow = StringFormat('%02i:%02i:%02i', $sHoras, $sMinutos, Mod($sSegundos, 60))
    Until $sShow = '00:00:00'
EndFunc

;Funcao de saida
Func _Quit()
    If WinActive($hWnd_Main) Then
        _WinAPI_AnimateWindow($hWnd_Main, 0x00050001, 300)
        Exit
    EndIf
EndFunc

;Exibe GUI perto do tray
Func moveToTaskbar($hwndByRef)
    $___aTaskbar = WinGetPos("[CLASS:Shell_TrayWnd]", "")
    $___aWin = WinGetPos($hwndByRef)
    WinMove($hwndByRef, "", @DesktopWidth - $___aWin[2] - 2, @DesktopHeight - $___aWin[3] - $___aTaskbar[3] - 2)
EndFunc

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×