下面的代码实现的功能是,先用Windows的ShellExecuteW函数以默认的方式打开文本文件,如果文件打开失败,则用WinExec函数调用打开方式对话框。
注意要引入头文件#include <windows.h> 和 #include <shellapi.h>
QString file = "C:/新建/中文.txt";
int nRes = 0; //以默认方式打开文件 nRes = (int)ShellExecuteW(NULL , QString("open").toStdWString().c_str() , file.toStdWString().c_str() , NULL , NULL , SW_SHOW ); int nRes2 = 0; char* cmd = QString("rundll32 shell32, OpenAs_RunDLL %1") .arg(file) .toLocal8Bit().data(); if(nRes <= SE_ERR_NOASSOC ) {//ShellExecuteW 返回值小于31表示执行出现错误, //调用打开方式对话框 nRes2 =WinExec(cmd ,SW_SHOWNORMAL ); } 附相关资料: http://baike.baidu.com/view/1044533.htm#sub1044533