Om jag skall göra ett program som ska upprepa något t.ex. var 10 minut. Hej hej Hej Använd API'erna SETTIMER och KILLTIMER i User32... Självklart. Det stod dock inget om att programmet skulle göra annat under tiden. Det stod endast att det skulle göras på ett resurssnålt vis, och då är inte timern det bästa precis. Men Patriks variant är väl dock den bästa. Skulle nån vilja förklara hur man använder dessa settimer och killtimer. Går dessa använda så att användaren kan se hur långt tid det är kvar till händelsen. Litet demonstration på hur det kan göras. HejVB - Upprep
Vilket sätt är då bäst och vilket frestar minst på systemresurserna.Sv: VB - Upprep
Låt en Timer1 räkna ner var 30 sekund eller mindre
beroend på hur noga du vill ha 10 minuter
mvh
SvenSv: VB - Upprep
>Använd API-funktionen Sleep.
Det är väl inte så lyckat då sover hans applikation
i tex 10 min dvs han kan inte komma åt någon annan
funktion i programmet under denna tid.
mvh
SvenSv: VB - Upprep
Så här kan du i princip lösa det
Option Explicit
DefLng A-Z
Dim Start As Single, Elapsed
Private Sub Command1_Click()
'Timer1 Interval lämplig 30000
Timer1.Enabled = True
Start = Timer
End Sub
Private Sub Timer1_Timer()
'Om midnatt passeras
If Start > Timer Then Start = Start - 86400
Elapsed = Timer - Start
If Elapsed >= 600 Then
'Gör något
Start = Timer
MsgBox ("10 minuter har gått")
End If
End Sub
mvh
SvenSv: VB - Upprep
Funkar klockrent behövs inga active x controller pch du får exakt precision .. ( Så när om spå ett 62 ms tror jag det är )Sv: VB - Upprep
Sv: VB - Upprep
Sv: VB - Upprep
Egentligen bör man köra en KillTimer och SetTimer i TimerProc för att hindra fler meddelandrutor från att visas.
Form1:
Option Explicit
Private mIDEvent As Long
Private Sub cmdStart_Click()
mIDEvent = SetTimer(hwnd, 0&, 5000, AddressOf TimerProc)
End Sub
Private Sub cmdStop_Click()
If mIDEvent Then
KillTimer 0&, mIDEvent
mIDEvent = 0
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
If mIDEvent Then
KillTimer 0&, mIDEvent
mIDEvent = 0
End If
End Sub
Module1:
Option Explicit
Public Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Public Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Public Function TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal IDEvent As Long, ByVal dwTime As Long) As Long
MsgBox "TimerProc"
End FunctionSv: VB - Upprep
Ett API som jag aldrig testat . Har inte analyserat
närmare. Hur funkar midnattspassage med denna metod ??
mvh
Sven