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

打包移植时候需要用到 光盘/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 LonglpBuffer字串长度
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_RAMDISK
参数表
参数 类型及介绍说明
nDrive String包含了驱动器根目录路径个字串



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

Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long

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)



_disibledevent= True

End Function
Tags:  u盘自动打开 u盘无法打开 vb弹出u盘 vbu盘

延伸阅读

最新评论

发表评论