• ベストアンサー

フォームを開いてからの時間を取得

ウィンドウズを起動してからの経過時間取得のプログラムは下記ようになったのですが・・・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

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

下記で参考になるところがあれば、使ってください。 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秒経過になったりしますが、私のタイマーの理解不足です。

1kou
質問者

補足

時間のカウントをはじめることは難しいのですか?

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

#2のものです。 http://homepage3.nifty.com/salv/v_sickhack/02/v_s02-01.htm のようなURLを見つけました。 補足にお書きになったことが理解できないんですが。済みません。

1kou
質問者

補足

参考になります(>_<)ありがとうございます

  • osamuy
  • ベストアンサー率42% (1231/2878)
回答No.1

イベントハンドラForm_Loadが実行された時の、GetTickCountの値をフォームのメンバ変数に保持しておいて、 Timerの方では、そいつを引いたものを経過時間とするとか。 大雑把ですが。

1kou
質問者

お礼

なるほど!ためしてみます!!ありがとうございます

関連するQ&A