使用shell函数打开D盘下所有exe文件(包括子文件夹中的),代码写了一部分,应该在原来的基础上加几行就可以了,高手帮忙看一下,谢谢!
代码如下
Sub GetPath(ByVal FilePath As String, ByVal list As ListBox)
'获取文件路径
FilePath = IIf(Right(FilePath, 1) = "\", FilePath, FilePath & "\")
'获取当前目录内的文件名
Dim FileName As String
FileName = Dir(FilePath) '初次使用dir函数需指明路径
'使用一个循环,遍历当前目录内的文件,并逐一验证其属性
Do While FileName <> ""
If Right(FileName, 3) = "jpg" Then
List1.AddItem FilePath & "\" & FileName
End If
FileName = Dir
Loop
'缺少此句只会遍历一级目录
FileName = LCase(Dir(FilePath, vbDirectory))
Dim ChildContent() As String
Dim Count As Integer
'获取下一级目录
Do While FileName <> ""
If FileName <> "." And FileName <> ".." Then
If GetAttr(FilePath & FileName) And vbDirectory Then
Count = Count + 1
ReDim Preserve ChildContent(Count)
'将下一级目录放入动态数组
ChildContent(Count) = FilePath & "\" & FileName
End If
End If
FileName = Dir
DoEvents
Loop
'回调自身,获取下一级目录内文件路径
Dim i As Integer
For i = 1 To Count
GetPath ChildContent(i), List1
Next i
End Sub
编译不通过,提示strDirect类型不匹配……
追答我都编译通过了。。。。你第23行代码怎么改的?
'发现了,我打错了一个地方,这里给因该给完整路径名称,好像是FileName
11 ListBox1.Items.Add(mFileInfo.FilePath)
我先是把完整代码复制进去编译了一下就提示报错……
还有就是第23行看不懂,初学者不太懂……
你初学VB,不学vb.net学vb6 ???
23行是调用递归函数,将你选择的目录作为参数进行传递
嗯嗯,就是把第11行改成你后来说的那个也还是报错……
追答这代码在vb6下执行可能会有点小问题要改一点,vb6太早了,我10年前用的,那时候一个VB一个PB作应用开发和数据库开发很爽、很快。
现在学习vb6起手节奏慢了。
vb6现在很多都忘了,不过程序改动应该很小,以这个代码作基础,进行修改应该很容易,你研究研究吧
第25行代码,调用过程,好像VB6必须以CALL 开头
25 改下 Call Exec_Shell()
30行的隐式声明可能VB6不一定支持吧,具体忘了,你改下
dim i as long
for i = 0 to ListBox1.Items.Count() - 1
......
第9行的 Dim mDirInfo As New System.IO.DirectoryInfo(strDirect)实例对象引用
应该是.NET Framework中的部分不知道vb6支持不支持。
不支持就要用对应的系统API函数
嗯嗯,好吧 谢谢!