请问,在程序中用ShellExecute运行打开文件,如何有些类型没反应

请教,在程序中用ShellExecute运行打开文件,怎么有些类型没反应
在程序中用ShellExecute运行打开文件,怎么有些类型没反应,只有txt之类的文件才会打开,如果是什么exe或者其他不认识的格式的,连弹出选择运行方式那个对话框都没有,这样程序很不友好,客户会认为程序没反应,请教,该如何处理

::ShellExecute(NULL,_T("open"),csFile,NULL,NULL,SW_SHOWNORMAL);

------解决方案--------------------
相关代码:
			strFilePathParam.Format( _T("\"%s\""), strFilePath ); // 加上双引号以防路径中有空格导致ShellExecute参数解析错误,2012/05/18
int nRet = (int)ShellExecute( NULL, _T("open"), strFilePathParam, NULL, NULL, SW_SHOWNORMAL );
if ( SE_ERR_NOASSOC == nRet ) // 没有相关的程序能够打开该文件
{
// 打开“打开方式->选择程序...”对话框
CString strCmd;
strCmd.SmallFormat( _T("shell32, OpenAs_RunDLL  %s"), strFilePath );
ShellExecute( NULL, _T("open"), _T("rundll32.exe"), strCmd, NULL, SW_SHOWNORMAL );
}