如何用VB延时执行命令?

要求功能如下:同一目录下有三个文件:file1.exe、file2.exe、file3.exe当我运行file1.exe之后二十秒后自动执行file2.exe,再过十秒执... 要求功能如下:同一目录下有三个文件:file1.exe、file2.exe、file3.exe
当我运行file1.exe之后二十秒后自动执行file2.exe,再过十秒执行file3.exe,再过五秒结束file2.exe的进程并删除file2.exe,再过五秒删除自身也就是file1.exe

这样的代码应该怎么写啊?请写全,非常感谢如果成功了再增加20分
用for循环来进行的话很费内存,加一个timer控件的话它就不延时而是每隔一会就执行一次,而且一开始就执行,有没有什么好的办法啊?
展开
 我来答
jinyan79854263
推荐于2016-11-13 · TA获得超过789个赞
知道小有建树答主
回答量:1772
采纳率:0%
帮助的人:0
展开全部
Dim i As String

Private Sub Command1_Click()
Print "运行文件1"
Shell "文件路径\file1.exe"
Timer1.Interval = 20000
Timer1.Enabled = True
End Sub

Private Sub Form_Load()
i = 0
End Sub

Private Sub Timer1_Timer()
i = i + 1
Select Case i
Case 1
Print "运行文件2"
Shell "文件路径\file2.exe"
Timer1.Interval = 10000
Case 2
Print "运行文件3"
Shell "文件路径\file3.exe"
Timer1.Interval = 5000
Case 3
Print "结束文件2并删除"
Shell "cmd /c taskkill /f /im file2.exe"
Kill "文件路径\file2.exe"
Timer1.Interval = 10000
Case 4
Print "结束文件1并删除"
Shell "cmd /c taskkill /f /im file1.exe"
Kill "文件路径\file1.exe"
Timer1.Interval = 0
Timer1.Enabled = False
End Select
End Sub
forest93
2009-08-06 · TA获得超过337个赞
知道小有建树答主
回答量:134
采纳率:0%
帮助的人:0
展开全部
实际上用 Timer 挺好的……
在 Form 上放置一个 Interval 为 1000 的 Timer 控件,命名 Timer1,
代码如下:
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long

Private Const PROCESS_ALL_ACCESS = &H100000 + &HF0000 + &HFFF

Private Sub Timer1_Timer()
On Error GoTo ErrHandle
Static I As Long, HProcFile2 As Long
I = I + 1
'每执行一次,给计数器加 1,当 Interval 为 1000 时,I - 1 实际上就是秒数
Select Case I - 1
Case 20
HProcFile2 = OpenProcess(PROCESS_ALL_ACCESS, 0, Shell(App.Path & "\file2.exe", vbNormalFocus))
'得到所有权限(包括结束进程)
Case 30
Shell App.Path & "\file3.exe", vbNormalFocus
Case 35
TerminateProcess HProcFile2, -1
'关闭 File3 的进程,退出码为 -1(非正常退出)
CloseHandle HProcFile2
DoEvents
Case 37 '稍后再删除没有什么影响吧
Kill App.Path & "\file2.exe"
Case 40
Kill App.Path & "\file1.exe"
Timer1.Enabled = False
End Select
Exit Sub
ErrHandle:
MsgBox Err.Description, 48
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
12monkeysgogo
2009-08-06 · TA获得超过384个赞
知道小有建树答主
回答量:602
采纳率:0%
帮助的人:420万
展开全部
帮你写了个函数。跟你说的for循环差不多,应该不会废多少内存的
Public Sub BKWait(HowManySecs)
Dim EndWait
EndWait = DateAdd("s", HowManySecs, Now)
While Now < EndWait
Wend
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
势广君dS
2009-08-06 · 超过35用户采纳过TA的回答
知道答主
回答量:167
采纳率:66%
帮助的人:39.6万
展开全部
使用TIMER控件,代码如下:
file1代码:(加入控件timer1,inerval设定为20000;加入控件timer2,inerval设定为10000,Enabled属性设定为FALSE;加入控件timer3,inerval设定为5000,Enabled属性设定为FALSE)
Private Sub Timer1_Timer()
Shell "file2.exe"
Timer1.Enabled = False
Timer2.Enabled = True
End Sub

Private Sub Timer2_Timer()
Shell "file3.exe"
Timer2.Enabled = False
Timer3.Enabled = True
End Sub

Private Sub Timer3_Timer()
'调用API结束file2的进程,代码略
KIll "file2.exe"
Timer3.Enabled = False
End Sub

file3代码:(加入控件timer1,inerval设定为5000)
Private Sub Timer1_Timer()
'调用API结束file1的进程,代码略
kill "file1.exe"
Timer1.Enabled = False
End Sub
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式