- ベストアンサー
フォームを開いてからの時間を取得
ウィンドウズを起動してからの経過時間取得のプログラムは下記ようになったのですが・・・VBでつくったフォームを開いたと同時にカウントされるようにコーディングしたいのですがどうしたらよいのでしょうか? 例) Aという名前のフォームを開くと「OO時間OO分OO秒経過」という風にそのフォームのステーラスバーに出そうとしています。 Private Declare Function GetTickCount Lib "kernel32.dll" () As Long Private Sub Timer1_Timer() Dim RetCount As Long Dim h As Integer, m As Integer, s As Integer, ms As Integer RetCount = GetTickCount 'ミリ秒単位で返ってきます ' h = RetCount \ 1000 \ 60 \ 60 m = RetCount \ 1000 \ 60 - h * 60 s = RetCount \ 1000 - (h * 60 * 60 + m * 60) ms = RetCount Mod 1000 Label1.Caption = "経過時間 " & Right(("0" & h), 2) & ":" _ & Right(("0" & m), 2) & ":" & Right(("0" & s), 2) & "." _ & Right(("00" & ms), 3) End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
下記で参考になるところがあれば、使ってください。 Dim t1 Private Sub Form_Load() Form1.Timer1.Interval = 5000 Form1.Timer1.Enabled = True Form1.Visible = True Form1.Print Time() & "スタート" t1 = Timer End Sub Private Sub Timer1_Timer() t2 = Timer Form1.Print Int(t2 - t1) & "秒経過" End Sub 実行すると11:12:20スタート 5秒経過 10秒経過 とかがフォームに出ます。 ただたまに4秒経過になったりしますが、私のタイマーの理解不足です。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
#2のものです。 http://homepage3.nifty.com/salv/v_sickhack/02/v_s02-01.htm のようなURLを見つけました。 補足にお書きになったことが理解できないんですが。済みません。
補足
参考になります(>_<)ありがとうございます
- osamuy
- ベストアンサー率42% (1231/2878)
イベントハンドラForm_Loadが実行された時の、GetTickCountの値をフォームのメンバ変数に保持しておいて、 Timerの方では、そいつを引いたものを経過時間とするとか。 大雑把ですが。
お礼
なるほど!ためしてみます!!ありがとうございます
補足
時間のカウントをはじめることは難しいのですか?