Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0153: Datenträgerbezeichnung lesen und schreiben

 von 

Beschreibung 

Datenträgerbezeichnungen lassen sich sowohl lesen als auch schreiben. Hier wird gezeigt wie es geht.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

GetVolumeInformationA (GetVolumeInformation), SetVolumeLabelA (SetVolumeLabel)

Download:

Download des Beispielprojektes [2,31 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text2"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Festplattenauswahlliste "Drive1"
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Declare Function SetVolumeLabel Lib "kernel32" _
        Alias "SetVolumeLabelA" (ByVal lpRootPathName _
        As String, ByVal lpVolumeName As String) As Long
        
Private Declare Function GetVolumeInformation Lib "kernel32" _
        Alias "GetVolumeInformationA" (ByVal lpRootPathName _
        As String, ByVal lpVolumeNameBuffer As String, ByVal _
        nVolumeNameSize As Long, lpVolumeSerialNumber As Long, _
        lpMaximumComponentLength As Long, lpFileSystemFlags _
        As Long, ByVal lpFileSystemNameBuffer As String, ByVal _
        nFileSystemNameSize As Long) As Long

Private Sub Form_Load()
  Text1.Text = GetDriveName("C:\")
  Text2.Text = ""
End Sub

Private Sub Command1_Click()
  Dim Drive$
  
    Drive = Left$(Drive1.Drive, 2) & "\"
    Call SetDriveName(Drive, Text2.Text)
    Drive1.Refresh
    Text1.Text = GetDriveName(Drive)
    Text2.Text = ""
End Sub

Private Sub Drive1_Change()
  Dim Drive$
  
    Drive = Left$(Drive1.Drive, 2) & "\"
    Text1.Text = GetDriveName(Drive)
    Text2.Text = ""
End Sub

Private Function GetDriveName(ByVal Drive$) As String
  Dim Result&, SerN&, PathL&, Flags&
  Dim VolN As String * 256
  Dim FileS As String * 256
    
    Result = GetVolumeInformation(Drive, VolN, 256, SerN, _
                                  PathL, Flags, FileS, 256)
    GetDriveName = Left$(VolN, InStr(VolN, Chr$(0)) - 1)
End Function

Private Function SetDriveName(ByVal Drive$, ByVal Name$)
  Name = Left$(Text2.Text, 11) & Chr$(0)
  Call SetVolumeLabel(Drive, Name)
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Martin am 05.05.2004 um 11:41

Ich habe dies und auch ein ähnliches Beispielprojekt herruntergeladen.

Das Umbenennen funktioniert bei beiden nur für das Laufwerk C:\
weder d:\(lokal) noch h bis z (netzlaufwerke) können umbenannt werden.

Wo liegt da das Problem ??

Kommentar von Simon Willis am 05.08.2003 um 22:14

was ist eine datenträgerbezeichnung! stichwort: fdisk partitionen löschen

Kommentar von türschmann am 27.07.2003 um 18:14

nachdem ich den Tipp zum Auslesen der Seriennummer ohne Probleme in eine ACCESS-DB einbinden konnte, gelingt mir das
mit dem Tipp für das Auslesen der Datenträgerbezeichnung nicht. Beim Betätigen des Command1-Button kommt folgende Fehlermeldung:
'Methode oder Datenobjekt nicht gefunden'.
Markiert ist die Zeile:
...
Drive = Left$(Drive1.Drive, 2) & "\"
...
In diesem Zusammenhang ist mir auch nicht klar, was es mit dem Control DriveListBox: Drive1 auf sich hat. Dass Drive1 der Name des Controls ist, liegt ja nahe, was eine Listbox ist ebenfalls, aber eine DriveListBox? Ich habe in meiner Ahnungslosigkeit einfach eine Listbox(Name:Drive1)platziert.

Ich arbeite mit Windows ME, Office 2000, VBA

Danke erst einmal fürs Lesen!

Kommentar von Pate am 17.07.2002 um 22:22

Unter win 2000 geht der Tipp überhaupt nicht, es kommt aber auch keine Fehlermeldung!!