MFC:如何打开Windows对话框“打开方式”(选择要用来打开此文件的程序)?

时间:2014-03-04 15:16:54

标签: winapi mfc

当我在打开的菜单中右键单击Windows中的某个文件时,有一个Open With...行,点击我可以选择一些程序,这将打开所选文件。所以现在我需要使用"tmp.xml"为某个文件启动此对话框(或者只运行MFC名称)。我需要像CFileDialog这样的东西来浏览文件。

我找到SHOpenWithDialog,但最低支持的客户端是Windows Vista [仅限桌面应用],最好也支持Windows XP。

1 个答案:

答案 0 :(得分:0)

所以我找到了这种解决方案。

void OpenWith(CString strFileNameToOpen)
{
    TCHAR lpPathBuffer[MAX_PATH];
    GetSystemDirectory(lpPathBuffer, MAX_PATH);
    CString strSystemDir = lpPathBuffer;
    STARTUPINFO si = {0};
    PROCESS_INFORMATION pi = {0};
    strSystemDir.Format(_T("rundll32.exe %s\\shell32.dll,OpenAs_RunDLL %s"), lpPathBuffer, strFileNameToOpen);
    CreateProcess(NULL, strSystemDir.GetBuffer(), NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
    CloseHandle(pi.hThread);
    CloseHandle(pi.hProcess);
}