こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

タイマーがうまく動かない

VB6.0(SP5)で、バッチファイルを実行後、5秒待つようにしたいのですが、うまく動きません。

Dim ping_count As Long

Private Sub Command1_Click()
Shell ("executeping.bat")
Timer1.Interval = 1000
Timer1.Enabled = True


Do
Text1.Text = "ただいま実行中"
Timer1_Timer
Loop Until ping_count = 5

Text1.Text = "終了"
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
ping_count = ping_count + 1
Text1.Text = "ただいま実行中"
End Sub

デバックで動かすと、ちゃんとループを5回繰り返してテキストボックスに「終了」と表示するのですが、実行するといきなり「終了」を表示してしまいます。
ループの中のTimer1_Timerをコメントにすると、デバックでは延々ループを続け、実行するとフリーズしてしまいます。
そもそもタイマーの使い方が間違っているのでしょうか?
教えてください。よろしくお願いします。

投稿日時 - 2004-05-31 20:13:55

QNo.876763

困ってます

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

 そもそもタイマーの使い方が間違ってます。
 ソースの添削してもいいのですが、単に5秒待ちをしたいのでしたら、以下の方法で可能です。

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

Private Sub Command1_Click()
~前処理~
Call Sleep(5000)

投稿日時 - 2004-05-31 20:18:42

お礼

ありがとうございました。
教えていただいた方法で意図したことができました。

投稿日時 - 2004-06-01 09:49:37

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

Dim ping_count As Long

Private Sub Command1_Click()
Shell("executeping.bat")
Timer1.Interval = 1000
Timer1.Enabled = True
Text1.Text = "ただいま実行中"
ping_count = 0
Do
'入力制御を待つコマンド
DoEvents
Loop Until ping_count = 5

Text1.Text = "終了"
Timer1.Enabled = False
End Sub

Private Sub Timer1_Timer()
ping_count = ping_count + 1
End Sub

投稿日時 - 2004-05-31 23:31:57

あなたにオススメの質問