エクスプローラでドライブを選択し、右クリックメニューからフォーマットを選択するとダイアログが出力され、ドライブのフォーマットを行うことができます。
ここでは、C# からこのフォーマットダイアログを出力するサンプルコードを掲載しています。なお、具体的には SHFormatDrive 関数を使用しています。
スポンサーリンク
フォーマットダイアログを出力する
具体的にフォーマットダイアログを出力するサンプルコードは次の通りです。詳細はコメントを参照ください。
参考
//using System.Runtime.InteropServices; // フォーマットダイアログ出力関数定義 [DllImport("shell32.dll")] private static extern uint SHFormatDrive(IntPtr hwnd, int drive, int formatID, int options); // フォーマットID(formatID)の定義 private const int SHFMT_ID_DEFAULT = 0xFFFF; // フォーマットダイアログ出力関数のリターン値 private const uint SHFMT_ERROR = 0xFFFFFFFF; // 最終フォーマットでエラー private const uint SHFMT_CANCEL = 0xFFFFFFFE; // 最終フォーマットでキャンセル private const uint SHFMT_NOFORMAT = 0xFFFFFFFD; // フォーマットできなかった private const int SHFMT_OPT_ZERO = 0x0000; // 通常フォーマット private const int SHFMT_OPT_FULL = 0x0001; // クイックフォーマット private void button1_Click(object sender, EventArgs e) { // フォーマットするドライブ string driveLetter = "K:"; // A ~ Z ドライブ(インデックス:0 ~ 25)定義 string[] driveLetters = { "A:","B:", "C:", "D:", "E:", "F:", "G:", "H:", "I:", "J:", "K:", "L:", "M:", "N:","O:", "P:", "Q:", "R:", "S:", "T:", "U:", "V:", "W:", "X:", "Y:", "Z:", }; // ドライブレターが配列内の要素と一致するインデックスを取得する int index = Array.IndexOf(driveLetters, driveLetter); if (index < 0) { MessageBox.Show("ドライブレターがおかしい。ワッハッハー"); return; } /* * パラメータ設定 */ // SHFormatDrive のパラメータ(drive)は A ~ Zドライブ が 0 ~ 25 に対応する int drive = index; // フォーマットドライブインデックス int options = SHFMT_OPT_FULL; // クイックフォーマット // フォーマットダイアログを出力する uint result = SHFormatDrive(this.Handle, drive, SHFMT_ID_DEFAULT, options); if ((result == SHFMT_ERROR) || (result == SHFMT_CANCEL) || (result == SHFMT_NOFORMAT)) { Console.WriteLine("エラーとかキャンセルとか"); } else { Console.WriteLine("最終フォーマットはOK牧場"); } }
フォーマットダイアログを出力せずともドライブのフォーマットを行うこともできますが、個人的には、本ページで掲載したフォーマットダイアログを出力する方法が最も最適と考えています。
がしかし、フォーマットのダイアログを出力されたくない方は、次のリンクも御確認ください。