Basic Univers
;/ Author: BackupUser tweaked by Droopy/Kale

ProcedureDLL TimerStart(TimerId, Delay, ProcedureAdress)
  SetTimer_(WindowID(), TimerId, Delay, ProcedureAdress)
EndProcedure

ProcedureDLL TimerKill(TimerId)
  KillTimer_(WindowID(), TimerId)
EndProcedure

;/ Test

Procedure Timer1() ; First ProgressBarGadget
  SetGadgetState(0, GetGadgetState(0)+ 1)
  Beep_(400, 10)
EndProcedure

Procedure Timer2() ; Second ProgressBarGadget
  SetGadgetState(1, GetGadgetState(1)+ 1)
  Beep_(1000, 10)
EndProcedure

Procedure Timer3()
  SetGadgetText(2, "Timer 3 Kill Timer 1 and 2")
  TimerKill(1) ;/ Kill Timer #1
  TimerKill(2) ;/ Kill Timer #2
  Beep_(1500, 500)
EndProcedure

OpenWindow(0, 0, 0, 230, 120, #PB_Window_SystemMenu|#PB_Window_ScreenCentered, "Timers with API")
CreateGadgetList(WindowID())
ProgressBarGadget(0, 10, 10, 210, 30, 0, 65, #PB_ProgressBar_Smooth)
ProgressBarGadget(1, 10, 45, 210, 30, 0, 9, #PB_ProgressBar_Smooth)
SetGadgetState(0, 0)
SetGadgetState(1, 0)
TextGadget(2, 10, 80, 210, 30, "Timer 1/2/3 Started", #PB_Text_Center)

;/ Starting Timers
TimerStart(1, 150, @Timer1())   ; Timer #1 each 150 ms
TimerStart(2, 1000, @Timer2())  ; Timer #2 each 1 second
TimerStart(3, 10000, @Timer3()) ; Timer #3 each 10 seconds
 
Repeat
Until WaitWindowEvent()=#PB_EventCloseWindow