エクスプローラのフォーマットダイアログを表示する

プログラムからエクスプローラのフォーマット用ダイアログを表示するテクニックです。

サンプル(32bit) ダウンロード

'フォーマットダイアログの表示(非公開API)
Private Declare Function SHFormatDrive Lib "Shell32.DLL" (ByVal hwnd As Long, ByVal Drive As Long, ByVal unknown As Long, ByVal ftype As Long) As Long


Private Sub FORMAT_SYORI(DRIVE_STR As String)
    
   'フォーマットダイアログの表示
   
   Dim sWORK_STR As String
   Dim nDRIVE_NO As Long
   Dim nRC As Long
   
   'ドライブ名のA-Zチェック
    sWORK_STR = StrConv(Left$(Trim$(DRIVE_STR), 1), vbUpperCase)
    If (Asc(sWORK_STR) < 65) Or (90 < Asc(sWORK_STR)) Then
       Beep
       MsgBox "ドライブ名が不正です。" + Chr$(10) + Chr$(10) + "ドライブ名は A〜Z のみ指定できます。", vbCritical, "ドライブ名不正!!"
       Exit Sub
    End If
     
    'リムーバブル ディスク チェック
    If GetDriveType(sWORK_STR + ":\") <> DRIVE_REMOVABLE Then
       Beep
       MsgBox "ドライブ " + sWORK_STR + ": はリームバブル ディスクではありません。", vbExclamation, sSYORI_NAME + "[HD等は初期化できません]"
       Exit Sub
    End If
   
    'ドライブ名→ドライブ番号に変更
    nDRIVE_NO = Asc(sWORK_STR) - 65
    
    Screen.MousePointer = vbHourglass
    'フォーマットダイアログの表示
    nRC = SHFormatDrive(Me.hwnd, nDRIVE_NO, 0, 1)
    Screen.MousePointer = vbDefault

End Sub

サンプル解説

SHFormatDrive関数で指定されたドライブのフォーマットダイアログを表示しています。

引数は次の通りです。
(引数の名前は、Declare Functionで指定したものです)

メンバー I/O 説明
hwnd In ダイアログの親となるウィンドウのハンドル
Drive In ドライブ番号
A:なら0、B:なら1となります。
unknown In よくわかりません。
ftype In フォーマットタイプの初期値
0: クイックフォーマット
1: 通常フォーマット
2: 起動専用

この関数はHDにも有効ですので取り扱いに注意する必要があります。


[ Window Close ]