Timmerについて

解決


GG  2005-03-04 18:15:13  No: 120039

5分間隔や10分間隔で
あるプロシジャーを実行さしたいのですが
Timmerだと約一分強までの間隔しか設定できません
プロシジャーの中でfor文を適当に回して見ましたがうまくいきません
何か、よい方法が無いでしょうか
環境:VB6.0SP6  WIN2000  or  WIN2003


ひろ  2005-03-04 18:56:39  No: 120040

実行予定日時を変数にセットしておいて、Timerイベントの中で現在時刻と
予定時刻を照合して処理実行するかどうかを判定すればいい話では?


通りすがり  URL  2005-03-04 19:07:53  No: 120041

Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)

Dim Temp() As String
Dim startM As Long
Dim startS As Long
Dim StartH As Long
Dim EndH    As Long
Dim EndM As Long
Dim EndT As String

Temp = Split(Format(Time, "h:m:s"), ":")
    StartH = CLng(Temp(0))
    startM = CLng(Temp(1))
    startS = CLng(Temp(2))
    
    If EndM >= 60 Then
        EndM = startM + 10 - 60
        EndH = StartH + 1
    Else
        EndM = startM + 10
        EndH = StartH
    End If
    EndT = EndH & EndM & startS
    
    Do Until Format(Time, "hms") = EndT
        DoEvents
        Sleep 100
    Loop
    MsgBox "10分経過", vbInformation


岡田 之仁  2005-03-04 19:34:41  No: 120042

そんな難しく考えないでも・・・
10秒間隔とか、1分間隔で設定して、タイマーエベントの発生回数を
カウントし、所定回数カウントしたら当然、それだけの時間が経過して
いることになるので、行いたい処理を実行・・・とか。

要は5分間隔が欲しいなら、タイマーを1分にして、カウントした値を
5でMODしてあまりがゼロなら、処理続行・・・カウンタはゼロクリ

ダメでしょうか・・・

以上。


ひろ  2005-03-04 19:36:29  No: 120043

余りにもひどいサンプルなので二言

・日付の変わり目の直前に実行すると終了予定時刻が実際にはあり得ない
  時刻になってしまうので永久ループになります
  (時刻ではなく日時で終了予定を計算する)

・ループ内のDoEventsのイベント処理中に終了予定時刻を過ぎてしまうと
  翌日までループが回り続けます
  ( = ではなく >= にする)


ねろ  2005-03-04 20:37:25  No: 120044

TimerとAPIのTimeGetTimeを組み合わせて、設定時間に近づくほど
Intervalを小さくしていって、最後の一秒くらいはLoopで回すと
かなり精度の高いタイマーが出来る。
まあこの質問者さんは、そんなに精度の高いタイマーは必要としない
様ですが、参考までに。


GG  2005-03-04 21:43:34  No: 120045

皆さん
ありがとうございました
無事できました

今後ともお願いします


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加