用于Windows XP的SHOpenWithDialog模拟?

时间:2014-03-04 16:44:11

标签: c++ windows

我需要打开"OpenWith"对话框,用户可以选择打开某个文件的程序,例如.xml
在vista和grater中,它可以通过SHOpenWithDialog完成,但我也需要支持Windows XP。

1 个答案:

答案 0 :(得分:0)

 bool BrowseOpenWith(const HWND hwnd, LPCTSTR lpszFilename)
{
ASSERT(!IsBadStringPtr(lpszFilename,INFINITE));
ASSERT(_tcslen(lpszFilename));

if (hwnd) {
    ASSERT(IsWindow(hwnd));
}

const CString strCmd=
    TEXT("shell32.dll,OpenAs_RunDLL ")
    +CString(lpszFilename);

const int nRet
    =(int)ShellExecute(hwnd,TEXT("open")
    ,TEXT("Rundll32.exe")
    ,strCmd
    ,NULL
    ,SW_SHOW);

return (nRet>32);
}