请问怎么枚举出计算机上的所有 U盘
并取得他们的盘号谢谢

解决方案 »

  1.   

    U盘问题这有好几个了。。你可以参看
    http://community.csdn.net/Expert/topic/4753/4753892.xml?temp=.8596155
    http://community.csdn.net/Expert/topic/4839/4839099.xml?temp=.5031855枚举U盘并不一定需要什么高深的API,呵呵,你要知道,U盘的盘符分配也是从A开始到Z之间的(我要说的是这符合盘符分配的规则),所以你只要挨个列举他们的类型,并得到是U盘的就可以了,具体代码:Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongPrivate Function USBDISK()
    Dim i As Long
        For i = Asc("A") To Asc("Z")
            If GetDriveType(Chr(i) + ":") = 2 Then DEBUG.Print "现有U盘: " & Chr(i)
        Next i
    End Function调用这个函数时DEBUG窗口就将依次输出所有U盘的盘符
      

  2.   


    谢谢 zcsor (偶是业余的)  啊啊
    我看过你的帖子 你好象写外挂把
      

  3.   

    Private Declare Function GetLogicalDriveStrings Lib "kernel32" Alias "GetLogicalDriveStringsA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As LongPrivate Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongU盘和软盘的一样DriveType是2
      

  4.   

    呵呵,写了点点而已啊,在学这方面的技术,象内存读写,消息拦截和处理,HOOK等等,只写了一个内存读写的,其他的偶还不会呢,呵呵,放心,我取得了一些代码,如果提供代码的各位老大允许,以后写出来的东西一定是开源的TO:heimazhao(赵世国) ( ) 
    你说的问题我没有测试,因为电脑上没有软驱,呵呵,认为用不上,配电脑的时候就没要。
    如果真的是那样,那么我们修改一下代码就可以了。思路如下:
    方法1:软盘通常为A或B,那么我们从C往后搜索方法2:U盘通常在硬盘盘符后,那么我们取DT为硬盘的后面的DT=2的盘。其实同出一辙了,方法1比较简单,修改代码如下:
    Private Declare Function GetDriveType Lib "kernel32" Alias "GetDriveTypeA" (ByVal nDrive As String) As LongPrivate Function USBDISK()
    Dim i As Long
        For i = Asc("C") To Asc("Z")
            If GetDriveType(Chr(i) + ":") = 2 Then DEBUG.Print "现有U盘: " & Chr(i)
        Next i
    End Function
    这就可以了其实如果是正常的思路,我们应该先取USB设备,进一步取其中为USB DISK的,而后取USB DISK对应的USB DRIVER ,从而得到其盘符,不过还真麻烦,但确实可以实现的,如果你有兴趣我可以给你代码。另外大家是不是了解盘符在WINDOWS中到底是怎么标志的呢?我的意思是,我们可以通过操作注册表或INI来获得这些值,如果想得到这些值的位置,很容易,用一个注册表和文件监视软件扫描当前盘,然后插入U盘,或者用WINDOWS优化大师等工具更改盘符,就可以发现被更改位置,自己看看就知道了,提供一个思路方法而已,偶么做回,不过这在编程中通常是非常有效的取得实现方法的方法。
      

  5.   

    啊啊 
    ------------------------------------------
    其实如果是正常的思路,我们应该先取USB设备,进一步取其中为USB DISK的,而后取USB DISK对应的USB DRIVER ,从而得到其盘符,不过还真麻烦,但确实可以实现的,如果你有兴趣我可以给你代码。
    ------------------------------------------谢谢 zcsor(偶是业余的,分不够问问题,请求捐赠,谢谢大家) 俺要代码 :)俺的 mail : [email protected]
      

  6.   

    你是想取USB设备然后那么做啊,很麻烦的,,呵呵,,呵呵。。我不会用API做,用WMI比较容易实现,代码有现成的,
      

  7.   

    其实不用那么费劲的,可以直接用WMI的CIM_USBDevice类来获取,你可以自己写写