[PR]

『新妻LOVELY×CATION』を応援しています!

「フォーマット」ダイアログを起動する

戻る

 「フォーマット」ダイアログを起動するには、SHELL32.DLL に含まれている 関数SHFormatDrive() を使用する。
 関数SHFormatDrive() は、フォーマットダイアログを表示し、ユーザの指示に従ってディスクのフォーマットを行う。
 以下は、この関数の簡単な説明と使用例です。

宣言:
    DWORD WINAPI SHFormatDrive( HWND hwnd, UINT drive, UINT fmtID, UINT options );
引数:
    HWND hwnd
     ダイアログボックスを所有するウィンドウのハンドルを指定します。

    UINT drive
     フォーマットするドライブのドライブ番号を指定します。
     ドライブ番号は0から始まります。( 0, 1, ………… , 25 )
     例えば、ドライブAであれば0、ドライブBであれば1です。

    UINT fmtID
     次の値を指定してください。
      #define SHFMT_ID_DEFAULT 0xFFFF
     
    UINT options
     「フォーマットの種類」を指定します。
     次のフラグのうち、どれか一つを指定することができます。
      #define SHFMT_OPT_QUICK   0x0000 // クイック フォーマット
      #define SHFMT_OPT_FULL    0x0001 // 通常のフォーマット
      #define SHFMT_OPT_SYSONLY 0x0002 // 起動専用
     
戻り値:
     関数が成功すると、フォーマットのIDが返ります。
     関数が失敗すると、以下のエラーコードが返ります。
      #define SHFMT_NOFORMAT 0xFFFFFFFDL // 指定されたドライブはフォーマット不能である
      #define SHFMT_CANCEL   0xFFFFFFFEL // フォーマットはキャンセルされた
      #define SHFMT_ERROR    0xFFFFFFFFL // 上記以外のエラー
     

使用例:
typedef DWORD (WINAPI *SHFORMATDRIVE)(HWND,UINT,UINT,UINT);

HINSTANCE     hInstance;     // SHELL32.DLL のインスタンスハンドル
SHFORMATDRIVE SHFormatDrive; // 関数SHFormatDrive() のアドレスを指すポインタ

hInstance = LoadLibrary( "SHELL32.DLL" ); // SHELL32.DLL のインスタンスハンドルを取得する
if ( hInstance )
{
	// 関数SHFormatDrive() のアドレスを取得
	SHFormatDrive = (SHFORMATDRIVE)GetProcAddress( hInstance, "SHFormatDrive" );
	if ( SHFormatDrive )
	{
		SHFormatDrive( hwnd,             // オーナーウィンドウのハンドル
		               drive,            // フォーマットするドライブのドライブ番号
		               SHFMT_ID_DEFAULT, // 用途不明
		               options );        // フォーマットの種類
	}
	FreeLibrary( hInstance ); // SHELL32.DLL のインスタンスハンドルを解放する
}


Google
ご意見・ご感想をお聞かせ下さい。匿名で送信できます。

 * 返信が必要な場合には postmaster@katsura-kotonoha.sakura.ne.jp へ直接メールしてください。

水無瀬 優 postmaster@katsura-kotonoha.sakura.ne.jp
『新妻LOVELY×CATION』を応援しています!