dポイントプレゼントキャンペーン実施中!

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をコメントにすると、デバックでは延々ループを続け、実行するとフリーズしてしまいます。
そもそもタイマーの使い方が間違っているのでしょうか?
教えてください。よろしくお願いします。

A 回答 (2件)

 そもそもタイマーの使い方が間違ってます。


 ソースの添削してもいいのですが、単に5秒待ちをしたいのでしたら、以下の方法で可能です。

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

Private Sub Command1_Click()
~前処理~
Call Sleep(5000)
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/06/01 09:49

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
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!