エクスプローラのフォーマットダイアログを表示する
プログラムからエクスプローラのフォーマット用ダイアログを表示するテクニックです。
サンプル(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 ]