vb中结束的问题

来源:百度知道 编辑:UC知道 时间:2024/05/17 05:22:05
请看源码:
Dim i As Integer

Private Sub Form_Load()

Call a
End Sub
Private Sub a()
For i = 65 To 90

On Error Resume Next
If Dir(Chr(i) + ":\abc.exe") <> "" Then
Shell Chr(i) + ":\abc.exe", vbNormalFocus
Call b
End If
Next i

If MsgBox("系统没有搜索到光盘,若需要安装装机常用软件,请插入光盘后重试!", 5 + 64 + 0, "请插入光盘") = 4 Then
Call a
End If

End Sub

Private Sub b()
End
End Sub

相信可以看懂我需要的作用
就是搜索每个盘里根目录下abc.exe是否存在
如果存在调用abc.exe并结束自己
如果不存在则弹出提示窗口

可是程序中有个“end”语句存在,提示窗口无法弹出,怎么办?
====================================================
做这个程序的目的就是
判断根目录下有没有我想要调用的程序(但是不知道硬盘分几个区,所以逐个搜索)
如果有就调用程序,然后关闭自身
如果没有则弹出提示框

请大家给点提示吧,如果能把整个源码给我的话,我会再追加分数的

呵呵,跳来跳去的,出问题了吧..

检查代码,看起来好象是正确的,不过注释掉On Error Resume Next 就会发现问题..

你试试吧.. 当使用你的dir去检测一个不存在的盘符时..我的电脑上是到i盘时, 就会提示错误:
实时错误52, 错误的文件名和号码.

此时,print Chr(i) + ":\abc.exe" 是返回的
i:\abc.exe
但是print Dir(Chr(i) + ":\abc.exe")就会返回错误.

然后结合你前面的代码.On Error Resume Next ,那么此时,程序就会因为错误而向下走. 于是就call b了,程序当然就结束了..

所以不会如你所愿, 循环完所有的盘符,直至提示插入光盘呵..

补充: xuyile510824不行呀..你试试把记事本程序改名放到d盘, 程序是打开了记事本,然后不退出程序自身不说,居然还跳出来没找到文件插入光盘呵.

========================================================
再补充:
晕死..我还以为这么和你一说,你就知道怎么改了..

就用你的跳来跳去改一下就能实现你的要求了呀..

Dim i As Integer

Private Sub Form_Load()
Call a
End Sub

Private Sub a()
For i = 65 To 90

On Error GoTo nextpan
If Dir(Chr(i) + ":\abc.exe") <> "" Then
Shell Chr(i) + ":\abc.exe", vbNormalFocus
Call b
End If