関数 ShellExecute() の第2引数に"openas"を指定することによってダイアログを起動することができる。 //********************************************************* // 「ファイルやフォルダを開くアプリケーションを選択」ダイアログを起動する //********************************************************* BOOL ShellOpenas( HWND hOwner, const char *FileName ) { return ( (HINSTANCE)HINSTANCE_ERROR <= ShellExecute( hOwner, "openas", FileName, NULL, NULL, SW_SHOWNORMAL ) ); }//ShellOpenas
関連づけの有無に関わらず「ファイルやフォルダを開くアプリケーションを選択」ダイアログを起動する関数を作る。 //********************************************************* // 「ファイルやフォルダを開くアプリケーションを選択」ダイアログを起動する //********************************************************* BOOL ShellOpenas( HWND hOwner, const char *FileName ) { char Param[1 + MAX_PATH + sizeof("shell32.dll,OpenAs_RunDLL ")]; // rundll32.exe を コマンドライン引数"shell32.dll,OpenAs_RunDLL ファイル名" で起動する sprintf( Param, "shell32.dll,OpenAs_RunDLL %s", FileName ); // コマンドライン引数を作成 return ( (HINSTANCE)HINSTANCE_ERROR <= ShellExecute( hOwner, NULL, "rundll32.exe", Param, NULL, SW_SHOWNORMAL ) ); }//ShellOpenas 関連 | |