VB问题:在使用驱动器列表框控件时,当用户选择的为软盘驱动器或光盘驱动器而驱动器中无盘时如何判断

时间:2021-04-06 11:30:08
VB问题:在使用驱动器列表框控件时,当用户选择的为软盘驱动器或光盘驱动器而驱动器中无盘时如何判断

5 个解决方案

#1


可能要用API

#2


gz up

#3


感谢您使用微软产品。

您希望使用VB,当用户点击驱动器列表框控件时,如果选择是CDROM或软驱,则判断其中是否有盘。您可以试试以下步骤:
1.获取用户点击的驱动器名称,如 a: [卷标]
2.分离出盘符(如提取“:”左侧的字符)
3.判断驱动器类型,如果是驱动器类型是CDROM或软驱,则继续,反之不作操作
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const DRIVE_CDROM = 5
Private Const DRIVE_FIXED = 3
Private Const DRIVE_REMOVABLE = 2   '软驱
Private Const DRIVE_RAMDISK = 6
Private Const DRIVE_REMOTE = 4
4.判断CDROM和软驱已使用的簇的大小
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
Dim Sectors As Long, Bytes As Long, FreeC As Long, TotalC As Long, Total As Long, Freeb As Long
GetDiskFreeSpace "YOUR_DRIVER", Sectors, Bytes, FreeC, TotalC  ' YOUR_DRIVER如 C:如果TotalC<>0,则驱动器中有盘,否则没盘。


更详细的信息,请查找MSDN相关的文章。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_2m3p.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_2pt1.asp
======================
- 微软全球技术中心  VB技术支持

本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
======================

#4


Option Explicit

Dim OldDrive As String

Private Sub Form_Load()
    OldDrive = Drive1.Drive
End Sub

Private Sub Drive1_Change()
On Error GoTo ErrHandler
    '........
    Dir1.Path = Drive1.Drive
    OldDrive = Drive1.Drive
    '.........
    Exit Sub
    
ErrHandler:
    If Err.Number = 68 Then
        MsgBox "请确定磁盘是否已经准备好", vbInformation, "提示"
    Else
        MsgBox Err.Description, vbCritical, "错误"
    End If
    Drive1.Drive = OldDrive
End Sub

#5


可否先判断驱动器中是否有文件,如果没有任何文件的话那就是没有软盘或光盘。

#1


可能要用API

#2


gz up

#3


感谢您使用微软产品。

您希望使用VB,当用户点击驱动器列表框控件时,如果选择是CDROM或软驱,则判断其中是否有盘。您可以试试以下步骤:
1.获取用户点击的驱动器名称,如 a: [卷标]
2.分离出盘符(如提取“:”左侧的字符)
3.判断驱动器类型,如果是驱动器类型是CDROM或软驱,则继续,反之不作操作
Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As Long
Private Const DRIVE_CDROM = 5
Private Const DRIVE_FIXED = 3
Private Const DRIVE_REMOVABLE = 2   '软驱
Private Const DRIVE_RAMDISK = 6
Private Const DRIVE_REMOTE = 4
4.判断CDROM和软驱已使用的簇的大小
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
Dim Sectors As Long, Bytes As Long, FreeC As Long, TotalC As Long, Total As Long, Freeb As Long
GetDiskFreeSpace "YOUR_DRIVER", Sectors, Bytes, FreeC, TotalC  ' YOUR_DRIVER如 C:如果TotalC<>0,则驱动器中有盘,否则没盘。


更详细的信息,请查找MSDN相关的文章。
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_2m3p.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/filesio_2pt1.asp
======================
- 微软全球技术中心  VB技术支持

本贴子仅供CSDN的用户作为参考信息使用。其内容不具备任何法律保障。您需要考虑到并承担使用此信息可能带来的风险。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。
======================

#4


Option Explicit

Dim OldDrive As String

Private Sub Form_Load()
    OldDrive = Drive1.Drive
End Sub

Private Sub Drive1_Change()
On Error GoTo ErrHandler
    '........
    Dir1.Path = Drive1.Drive
    OldDrive = Drive1.Drive
    '.........
    Exit Sub
    
ErrHandler:
    If Err.Number = 68 Then
        MsgBox "请确定磁盘是否已经准备好", vbInformation, "提示"
    Else
        MsgBox Err.Description, vbCritical, "错误"
    End If
    Drive1.Drive = OldDrive
End Sub

#5


可否先判断驱动器中是否有文件,如果没有任何文件的话那就是没有软盘或光盘。