ShellExecuteA不识别中文路径

u010075251 2014-06-25 05:18:15
各个兄弟姐妹们:

遇到一些问题,假如下面的exe放面一个有中文路径的文件夹下,就无法打开,如果没有中文,就工作正常是怎么回事。

谢谢各位!

bool bResult = false;
QString strAdsu;
bResult = true;
strAdsu = QCoreApplication::applicationDirPath () + "/OnlineUpdate-0612-console.exe";

int result = (int)::ShellExecuteA(0, "open", strAdsu.toUtf8().constData(), NULL, 0, SW_SHOWNORMAL);
...全文
304 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
u010075251 2014-07-04
  • 打赏
  • 举报
回复
此问题已解,问题不是出在你这里,而是QString向String转换时,中文转换就失败了。 所以不成功。
赵4老师 2014-07-01
  • 打赏
  • 举报
回复
    bResult = true;
    strAdsu = QCoreApplication::applicationDirPath () + "\\OnlineUpdate-0612-console.exe";
    string temp=strAdsu.toStdString();
    size_t size=temp.length();
    wchar_t *buffer=new wchar_t[size+1];
    MultiByteToWideChar(CP_ACP,0,temp.c_str(),size,buffer,size*sizeof(wchar_t));
    buffer[size]=L'\0';
    ::MessageBoxW(NULL,buffer,L"Test",MB_OK);
    int result = (int)::ShellExecuteW(0, L"open", buffer, NULL, 0, SW_SHOWNORMAL);
    delete buffer;
u010075251 2014-07-01
  • 打赏
  • 举报
回复
bool bResult = false; QString strAdsu; #ifdef Q_OS_WIN32 bResult = true; strAdsu = QCoreApplication::applicationDirPath () + "/OnlineUpdate-0612-console.exe"; string temp=strAdsu.toStdString(); size_t size=temp.length(); wchar_t *buffer=new wchar_t[size+1]; MultiByteToWideChar(CP_ACP,0,temp.c_str(),size,buffer,size*sizeof(wchar_t)); buffer[size]='\0'; int result = (int)::ShellExecuteW(0, _T("open"), buffer, NULL, 0, SW_SHOWNORMAL); delete buffer; 我改成ShellExecuteW,不知道是转换问题,还是其他问题,仍然不识别中文路径。
一如当初 2014-06-25
  • 打赏
  • 举报
回复
建议你看看QProcess这个类。
辰岡墨竹 2014-06-25
  • 打赏
  • 举报
回复
用ShellExecuteW,QString转.utf16。 用ShellExecuteA,QString用.local8bit。 建议用第一个,避免额外的转换。
赵4老师 2014-06-25
  • 打赏
  • 举报
回复
toUtf8?! 人家ShellExecuteA要求GBK,你非得给人家传UTF8! 试对比:啊 GBK:0xB0 0xA1,Unicode-16 LE:0x4A 0x55,Unicode-16 BE:0x55 0x4A,UTF-8:0xE5 0x95 0x8A
ztenv 版主 2014-06-25
  • 打赏
  • 举报
回复
带后缀A的识别不了,要用带后缀W的才能识别

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧