Private Sub Timer1_Timer() i = GetDriveType(Left(Drive1.Drive, 2)) '可移动的盘符 If i = 2 Then '做该做的事情 End If End Sub
检测磁盘驱动器类型的API函数定义: 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,包含了驱动器根目录路径的一个字串
参考blog.slnsoft.com上的那个VC下对U盘的检测吧,VB中具体怎么做,真还不清楚。
引用“Micorsoft SysInfo Control6.0” '↓有即插即用設備發生時(產生在系統加入新硬體時) Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long) If DeviceType = 2 Then ' msgbox "有U盤插入" End If End Sub
i = GetDriveType(Left(Drive1.Drive, 2))
'可移动的盘符
If i = 2 Then
'做该做的事情
End If
End Sub
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,包含了驱动器根目录路径的一个字串
'↓有即插即用設備發生時(產生在系統加入新硬體時)
Private Sub SysInfo1_DeviceArrival(ByVal DeviceType As Long, ByVal DeviceID As Long, ByVal DeviceName As String, ByVal DeviceData As Long)
If DeviceType = 2 Then '
msgbox "有U盤插入"
End If
End Sub
n即為盤符(對應字母順序A盤為0、B盤為1...)
如:DeviceID為16
即2的4次方=16 也就是插入的U盤盤符是D
即2的4次方=16 也就是插入的U盤盤符是D,應該為E盤
如果你有光驱的话,你的移动盘就是编号为Me.Drive1.ListCount -2倒数第2个
没有光驱就是Me.Drive1.ListCount -1倒数第一个
名字就是Debug.Print Drive1.Drive