Private Sub Command2_Click()
Dim ls_drive As Stringls_drive = "h:\"
Dim rtn As Integer
Dim bol As Boolean
bol = True
Do While (bol)
    rtn = GetDriveType(ls_drive) '判断盘符是否存在
    If rtn = 2 Then '2为存在
        bol = False
    End If
Loop
MsgBox "cha le"
End Sub 
'想判断U盘是否插上了,可这么判断CPU占用率总是100%怎么解决,请高手指点

解决方案 »

  1.   

    CPU占用是因为你的代码陷入了死循环,你F8就可以看见
    Do While (bol)
    loop
    这个条件,你自己检查吧,我都不想说了。我非常的不理解,你只是判断H:盘,为什么要用一个循环去判断???
    你又不是一个个去循环硬盘盘符GetDriveType API取得的几个数值分别代表的是
    #define DRIVE_UNKNOWN      0   // 无效路径名
    #define DRIVE_NO_ROOT_DIR  1   // 无效路经,如无法找到的卷标
    #define DRIVE_REMOVABLE    2   // 可移动驱动器(如磁盘驱动器,光驱等)
    #define DRIVE_FIXED        3   // 固定的驱动器 (如 通常的硬盘)
    #define DRIVE_REMOTE       4   // 网络驱动器
    #define DRIVE_CDROM        5   // CD-ROM
    #define DRIVE_RAMDISK      6   // 随机存取(RAM) 磁盘实际上2代表是可移动驱动器(如磁盘驱动器,光驱等)我在win2k3下做测试,U盘会认为是3,而不是2。至于win2k你自己试吧
    Option Explicit
    Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongPrivate Sub Command1_Click()
        Dim ls_drive As String    ls_drive = "Z:\"
        Dim rtn As Integer
        Dim bol As Boolean
        bol = True    rtn = GetDriveType(ls_drive) '判断盘符是否存在
        Debug.Print rtn
    End Sub
      

  2.   

    DoEvents 函数 ,可以解决CPU占用率总是100%的问题DoEvents 函数 ,转让控制权,以便让操作系统处理其它的事件
      

  3.   

    你的程序我试过,没问题,插入U盘会弹出“chale”。 移动硬盘对应的是DRIVE_REMOVABLE即2。不过莫MM说得也有道理,一旦你插入的U盘盘符不是h:\,那你这岂不是死循环?!这种做法实在不太好,呵呵
      

  4.   

    Option Explicit
    Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongPrivate Sub Command1_Click()
        Dim rtn As Integer
        For i = 65 To 90
            rtn = GetDriveType(Chr(i) & ":\")
            If rtn = 2 Then
                MsgBox "U盘存在!"
                Exit For
            End If
        Next
    End Sub
      

  5.   

    楼上的,我在上面已经指出来了,我测试过U盘是为3,而且硬盘也是为3的,在win2k3下我个人觉得楼主应该知道那个盘符后去判断是否存在更为准确而已
      

  6.   

    还有,我请大家看清楚他的代码,不要一味的以为DoEvents可以解决问题,他的问题本质并不是DoEvents能够解决的,拜托看清楚再答
      

  7.   

    容易zhao tiger的定时器 :)
      

  8.   

    KAO,用HOOK啊,可以偵測到U盤插上來的信號。
    然後取盤符。我寫過偷老師U盤信息的東西。
    MSN:[email protected]