Auflistung der Partionen/Laufwerke

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

Suco-X

Betreff: Auflistung der Partionen/Laufwerke

BeitragSa, Apr 29, 2006 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi
Zwar nicht das Highlight, aber sicher für den ein oder anderen zu gebrauchen.
Diese Funktion listet wahlweise die Namen aller Festplattenpartionen, CD und Diskettenlaufwerke auf. Ein Beispiel ist dabei.
Falls jemand den Code für Linux/Mac kennt, kann man ihn ja hinzufügen.


Code: [AUSKLAPPEN]

Strict


' Code

Function GetDrives:TList(Extra:Int=0)
   ?Win32
      Extern "Win32"
         Function GetLogicalDriveStrings(Length:Int, Buffer:Byte Ptr)="GetLogicalDriveStringsA@8"
         Function GetDriveType(Name$z)="GetDriveTypeA@4"
      End Extern

      Local MaxSize:Int
      Local Buf:Byte Ptr
      Local StringList:TList
      Local Name:String
      Local DriverType:Int
      
      MaxSize    = 1024
      Buf        = MemAlloc(MaxSize)
      StringList = New TList
      
      GetLogicalDriveStrings(MaxSize, Buf)
      
      For Local i:Int = 0 Until MaxSize
         If Buf[i] = 0
            Name = Name.Trim()
            If Name
               DriverType = GetDriveType(Name)
               
               Select Extra
                  Case 0
                     If DriverType=3
                        StringList.AddLast(Name)
                     EndIf
                  Case 1
                     If DriverType=5
                        StringList.AddLast(Name)
                     EndIf
                     
                  Case 2
                     If DriverType=2
                        StringList.AddLast(Name)
                     EndIf
                     
                  Default
                     If DriverType=3
                        StringList.AddLast(Name)
                     EndIf
               End Select
               
            EndIf
            Name = ""   
         Else
            Name:+Chr(Buf[i])
         EndIf
      Next
      
      MemFree(Buf)
      
      Return StringList
   ?
   Return Null
End Function



'Sample

Local Partionen:TList = GetDrives(0)
Local CDLaufwerke:TList = GetDrives(1)
Local DisLaufwerke:TList = GetDrives(2)


Print "Partionen"
For Local Name:String = EachIn Partionen
   Print Name
Next



Print "CD Laufwerke"
For Local Name:String = EachIn CDLaufwerke
   Print Name
Next



Print "Disketten Laufwerke"
For Local Name:String = EachIn DisLaufwerke
   Print Name
Next



Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Ninja

BeitragSa, Apr 29, 2006 16:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Und leute die nur die Roots ohne typ wollen ist bereits mit diesem 3 Zeiler geholfen Wink

Code: [AUSKLAPPEN]
For i = 65 To 90
   If FileType(Chr(i)+":\") = 2 Then Print(Chr(i)+":\")
Next


mfg Ninja
Spiele & Security Tools
www.SelfSoft.org

Suco-X

Betreff: ......

BeitragSa, Apr 29, 2006 17:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Und sobald es zum Diskettenlaufwerk kommt, gibt es eine unschöne Windows Warnbox Wink
Mfg Suco
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group