只要文件具有正确的关联,我就可以使用Windows ShellExecute函数毫无问题地打开文件。

如果不存在关联,我想使用默认的Windows对话框打开文件:

winapi - 如果ShellExecute由于C++中没有文件关联而失败,如何打开窗口的默认对话框?-LMLPHP

这可能吗?如果可以,怎么办?

最佳答案

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/

10-12 20:43