散分是惯例,大家抬头便知谢谢大家半年多来给我的照顾,特别是认识了好多热心的朋友让我们共同努力,共同提高吧!附带声明:
    本人性别男,发消息给我的时候请不要叫我打眼儿姐,如果我的名字产生了什么歧异的话,在此表示歉意。

解决方案 »

  1.   

    ------------------------------------------------------------------
    个人专栏:http://www.csdn.net/develop/author/netauthor/lihonggen0/
    ------------------------------------------------------------------
      

  2.   

    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 Declare Function GetLogicalDrives Lib "kernel32" () As Long
      下面,开始编写代码:
      首先建立一个drivecount的函数,用来返回磁盘驱动器的个数,代码如下:
    Public Function DriveCount() As Integer
    Dim BitMask As Long
    Dim j, i
    BitMask = GetLogicalDrives()
    For i = 0 To 24
    If BitMask And 2 ^ i Then
    j = j + 1
    End If
    Next i
    DriveCount = j
    End Function
    之后,再建立一个函数,专门用来返回驱动器的名称,代码如下:
    Public Function LoadDrivenames(An_Array() As String) As Long
    Dim j, i
    Dim lpBuffer As String
    ReDim An_Array(128) As String
    lpBuffer = Space$(1024)
    GetLogicalDriveStrings Len(lpBuffer), lpBuffer
    j = InStr(lpBuffer, Chr$(0))
    Do While j > 0
    An_Array(i) = Left$(lpBuffer, j - 1)
    i = i + 1
    lpBuffer = Mid$(lpBuffer, j + 1)
    j = InStr(lpBuffer, Chr$(0))
    Loop
    ReDim Preserve An_Array(DriveCount)
    End Function
    这个函数中用一个数组An_Array()来存储磁盘驱动器的名称。
    下面,再建立一个函数用来返回磁盘驱动器的类型,代码如下:
    Public Function Types(Optional sDrive As String) As String
    Select Case GetDriveType(sDrive) '注:此处必为"c:\",不能为"c"
    Case 0
    Types = "UNKNOWN"
    Case 1
    Types = "UNKNOWN"
    Case 2
    Types = "DRIVE_REMOVABLIE"
    Case 3
    Types = "DRIVE_FIXED"
    Case 4
    Types = "DRIVE_REMOTE"
    Case 5
    Types = "DRIVE_CDROM"
    Case 6
    Types = "DRIVE_RAMDISK"
    Case Else
    Types = "ERROR"
    End Select
    End Function
    注意:这个函数的参数sdrive:只能为如"c:\"形式的,而不能为"c"形式的。
    下面就可以调用这几个函数,来获得我们想要的东西。
    在command1_click事件中,加入以下代码:
    Private Sub Command1_Click()
    Dim a() As String '用来存储磁盘驱动器的名称,形式为"c:\"等
    Dim i As Integer
    Form1.Cls '每次点击都刷新显示窗体,本程序是在窗体上显示的
    Print "驱动器个数:" 
    Print DriveCount '调用drivecount返回磁盘驱动器的个数
    Call LoadDrivenames(a) '调用loaddrivename,以a为参数,返回驱动器名称
    For i = 0 To DriveCount - 1
    Print " ";
    Print a(i);
    Print " ---- ";
    Print Types(a(i)) '调用types,返回驱动器类型
    Next i
    End Sub  好了,点一下run,就可以运行了,有一点需要说明,当装了虚拟光驱时,被虚拟的硬盘的类型也被认为是光盘驱动器,即Types = "DRIVE_CDROM".
      

  3.   

    to holydiablo(鱼头) 
       sorry,一失手落下你了,抱歉抱歉