只要文件具有正确的关联,我就可以使用Windows ShellExecute函数毫无问题地打开文件。
如果不存在关联,我想使用默认的Windows对话框打开文件:
这可能吗?如果可以,怎么办?
最佳答案
documented way显示该对话框是使用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导出相同。关于winapi - 如果ShellExecute由于C++中没有文件关联而失败,如何打开窗口的默认对话框?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6364879/