ボリューム名の取得と設定 <TOP>
GetVolumeInformation
ファイルシステムの情報を取得する関数
SetVolumeLabel
ボリューム名の設定
例ではCドライブのボリューム名(ボリュームラベル)を初期状態のローカル ディスクからWindowsに変更しています。
エディットボックスにボリューム名を入力し『設定』ボタンをクリックします。
Windowsに変更して『設定』ボタンクリック 変更された状態の確認
'================================================================ '= ボリューム名の取得と設定 '= (SetVolumeLabel.bas) '================================================================ #include "Windows.bi" ' 利用可能ディスクドライブ取得 Declare Function Api_GetLogicalDrives& Lib "kernel32" Alias "GetLogicalDrives" () ' ファイルシステムの情報を取得する関数 Declare Function Api_GetVolumeInformation& Lib "kernel32" Alias "GetVolumeInformationA" (ByVal RootPathName$, ByVal VolNameBuff$, ByVal VolNameSize&, VolSerialNum&, MaxComponentLen&, FileSysFlag&, ByVal FileSysNameBuff$, ByVal FileSysNameSize&) ' 指定されたボリュームに、ボリュームラベルを設定 Declare Function Api_SetVolumeLabel& Lib "kernel32" Alias "SetVolumeLabelA" (ByVal lpRootPathName$, ByVal lpVolumeName$) #define MAX_PATH 260 Var Shared Edit1 As Object Var Shared Combo1 As Object Var Shared Text(3) As Object For i = 0 To 3 Text(i).Attach GetDlgItem("Text" & Trim$(Str$(i + 1))) Text(i).SetFontSize 14 Next i Edit1.Attach GetDlgItem("Edit1") : Edit1.SetFontSize 14 Combo1.Attach GetDlgItem("Combo1") : Combo1.SetFontSize 14 Var Shared RootPathName As String '================================================================ '= '================================================================ Declare Sub MainForm_Start edecl () Sub MainForm_Start() Drives = Api_GetLogicalDrives() '利用可能なディスクドライブ取得 If Drives = 0 Then Exit Sub '関数が失敗したとき For i = 0 To 25 'A〜Zドライブを検索する If (Drives And 1) = 1 Then RootPathName = Chr$(65 + i) 'ドライブ名(A〜Z)に変換 RootPathName = RootPathName & ":\" Combo1.AddString RootPathName End If Drives = Drives \ 2 'ドライブ検索 Next i End Sub '================================================================ '= '================================================================ Declare Sub Button1_on edecl () Sub Button1_on() Var VolumeName As String * MAX_PATH Var SerialNumber As Long Var MaxCompoLength As Long Var FileSystemFlags As Long Var FileSystemName As String * 32 Var Ret As Long '対象のルートパス名を指定 RootPathName = Left$(Combo1.GetText(Combo1.GetCursel), 3) 'ボリュームに関する情報を取得 Ret = Api_GetVolumeInformation(RootPathName, VolumeName, Len(VolumeName), SerialNumber, MaxCompoLength, FileSystemFlags, FileSystemName, Len(FileSystemName)) 'ボリュームに関する情報を表示 Text(3).SetWindowText Left$(VolumeName, InStr(VolumeName, Chr$(0)) - 1) Edit1.SetWindowText "" End Sub '================================================================ '= '================================================================ Declare Sub Button2_on edecl () Sub Button2_on() Var VolumeName As String Var Ret As Long 'ボリューム名を指定 VolumeName = GetDlgItemText("Edit1") 'ボリューム名を設定 Ret = Api_SetVolumeLabel(RootPathName, VolumeName) End Sub '================================================================ '= '================================================================ While 1 WaitEvent Wend Stop End