「フォーマット」ダイアログを起動するには、SHELL32.DLL に含まれている 関数SHFormatDrive() を使用する。
ダイアログボックスを所有するウィンドウのハンドルを指定します。 UINT drive フォーマットするドライブのドライブ番号を指定します。 ドライブ番号は0から始まります。( 0, 1, ………… , 25 ) 例えば、ドライブAであれば0、ドライブBであれば1です。 UINT fmtID 次の値を指定してください。 #define SHFMT_ID_DEFAULT 0xFFFFUINT options 「フォーマットの種類」を指定します。 次のフラグのうち、どれか一つを指定することができます。 #define SHFMT_OPT_QUICK 0x0000 // クイック フォーマット #define SHFMT_OPT_FULL 0x0001 // 通常のフォーマット #define SHFMT_OPT_SYSONLY 0x0002 // 起動専用戻り値:
関数が失敗すると、以下のエラーコードが返ります。 #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 のインスタンスハンドルを解放する } |
|