用 VB 打开任意盘(硬盘/U盘/光盘)的文件. (转)

用 VB 打开任意盘(硬盘/U盘/光盘)的文件. (转)[@more@]

程序打包移植的时候,需要用到 光盘/U盘 。在不知道机子上的光盘的盘符是多少,或不知道盘符的类别和盘符的总数的话。

......... 可以用如下方法来判断 .........

要用到的 api 描述:

返回机子上的所有盘符

GetLogicalDriveStrings 

VB声明 Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long 说明 获取一个字串,其中包含了当前所有逻辑 驱动器的根驱动器路径 返回值 Long,装载到lpBuffer的字符数量(排除空中止字符)。如缓冲区的长度不够,不能容下路径,则返回值就变成要求的缓冲区大小。零表示失败。会设置 GetLastError 参数表 参数类型及说明 nBufferLength Long,lpBuffer字串的长度 lpBuffer String,用于装载逻辑驱动器名称的字串。每个名字都用一个NULL字符分隔,在最后一个名字后面用两个NULL表示中止(空中止)

 

不同的盘类型可以用 GetDriveType 来判断.

GetDriveType
VB声明 Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long 说明 判断一个 磁盘驱动器的类型 返回值 Long,如驱动器不能识别,则返回零。如指定的目录不存在,则返回1。如 执行成功,则用下述任何一个常数指定驱动器类型:DRIVE_REMOVABLE, DRIVE_FIXED, DRIVE_REMOTE, DRIVE_CDROM 或 DRIVE_R amdISK 参数表 参数类型及说明 nDrive String,包含了驱动器根目录路径的一个字串

 

如下用打开光盘指定的里的文件做例子:

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongXML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />

Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long

 

Private Sub Form_Click()

  Dim StrDrive As String  '盘符串(A: C: D:...)

  Dim DriveID As String  '盘符(如:A:)

  StrDrive = String(100, Chr$(0))  '初始化盘符串

  Call GetLogicalDriveStrings(100, StrDrive) '返回盘符串

  Dim i As Integer

  '返回光盘盘符到数组

  For i = 1 To 100 Step 4  '注意这里是4

  DriveID = Mid(StrDrive, i, 3)  '枚举盘符

  If DriveID = Chr$(0) & Chr(0) & Chr(0) Then Exit For '没有盘符,即时退出循环

 

  If GetDriveType(DriveID) = 5 Then Call shellPro(DriveID)

  '如果枚举到的盘是CD-ROM,转到 ShellPro 子程序

  Next i

End Sub

 

'子程序:::::打开文件

Sub ShellPro(DrivePro As String)

 

 On Error GoTo Err_File:

  If Not IsEmptyCDROM(DrivePro) Then

  Shell (DrivePro & "Hello.exe")  '打开文件路径

  Unload Me

  End  '并结束本程序

  Else

  Debug.Print "CD-ROM is Empty"

  End If

Err_File:

  If Err.Description = "错语的文件名或号码" Then Exit Sub

End Sub

 

Function IsEmptyCDROM(sDrive As String)

  Dim s

 

  On Error GoTo ErrHandle

  s = Dir(sDrive + "*.*")

  IsEmptyCDROM = False

  Exit Function

ErrHandle:

  IsEmptyCDROM = True

End Function

 

注:以上代码可随意调用,修改... :)


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-998203/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10752043/viewspace-998203/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值