Placer denne kode i din BAS-fil:
Option Explicit
Private Const Interval = 10000 'Millisekunder, altså 10 sekunder her.
Private lngTimerID As Long
Private m_Dummy As Long
Private Declare Function SetTimer Lib "user32" _
(ByVal hWnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" _
(ByVal hWnd As Long, _
ByVal nIDEvent As Long) As Long
Public Sub StoptTimer()
m_Dummy = KillTimer(m_hWnd, lngTimerID)
End Sub
Public Sub StartTimer()
lngTimerID = SetTimer(m_hWnd, 0, Interval, AddressOf TimerProc)
End Sub
Sub TimerProc(ByVal hWnd As Long, _
ByVal uMsg As Long, _
ByVal idEvent As Long, _
ByVal dwTime As Long)
Stoptimer
Msgbox "TimerProc er blevet kaldt!"
StartTimer
End Sub
I din form skal du så kalde StartTimer.
Det der sker er at du vha. Windows API starter en tråd/proces som kalder
TimerProc med det angivne interval. Windows API'en skal derfor have
adressen på den sub den skal kalde, derfra AddressOf.
TimerProc skal have de angivne parametre, ellers virker det ikke.
Det er yderst vigtigt at du husker to ting:
Stop timeren når programmet forlades.
Brug aldrig Stop knappen hvis du debugger kode. Det kan medføre
at Visual Basic afsluttes uden varsel. Det samme gælder hvis du
modtager en advarsel om at projektet bliver reset.
Michael N. Petersen Krogh
VB udvikler
"Lasse Madsen" <lm@vxd.dk> skrev i en meddelelse
news:3d0f2252$0$237$edfadb0f@dspool01.news.tele.dk...
> Hej ...
>
> Hvis jeg nu vil lave en timer der fra start tager feks 1 sek til den
stopper
> og computeren ikke skal være "optaget" med denne timing hvordan gør man så
?
>
> hvis det havde været noget mikroprocessor halløj ville jeg kunne have
brugt
> en intern timer ... lade programmet arbejde videre og så når den lavede et
> "overflow" ville timeren automatisk kalde mig tilbage til et bestemt sted
i
> koden hvor jeg skrev hvad der skulle ske når den var færdig med timingen
....
>
> hvordan kan man gøre det ?
>
> m.v.h
> l. madsen
>
>
|