ファイルの関連付けが正しい限り、Windows の ShellExecute 関数を使用して問題なくファイルを開くことができます。
関連付けが存在しない場合は、デフォルトの Windows ダイアログを使用してファイルを開きたいと思います。
これは可能ですか?もしそうなら、どのように?
ファイルの関連付けが正しい限り、Windows の ShellExecute 関数を使用して問題なくファイルを開くことができます。
関連付けが存在しない場合は、デフォルトの Windows ダイアログを使用してファイルを開きたいと思います。
これは可能ですか?もしそうなら、どのように?
そのダイアログを表示するための文書化された 方法は、openas動詞を使用することです。
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED|COINIT_DISABLE_OLE1DDE);
SHELLEXECUTEINFO sei = { sizeof(sei) };
sei.fMask = SEE_MASK_NOASYNC;
sei.nShow = SW_SHOWNORMAL;
sei.lpVerb = "openas";
sei.lpFile = "C:\\yourfile.ext";
ShellExecuteEx(&sei);
下をチェックするHKEY_CLASSES_ROOT\Unknown\shell\openas
と、これはshell32で(文書化されていない)OpenAs_RunDLLエクスポートを呼び出すのと同じであることがわかります。
実行するRUNDLL32 Shell32,OpenAs_RunDLL path/to/file/to/open