我用ShellExecute()打开一个exe文件。执行完毕返回值为42,按照MSDN上所说说明已经执行正确,该exe文件就应该打开了,但实际结果却没有,请问这是为什么呢?

解决方案 »

  1.   

    exe文件单独执行没问题代码如下: HINSTANCE hInstance = ShellExecute(NULL, "open", "C:\\Program Files\\kingview\\Touchvew.exe", NULL, NULL, SW_SHOW); int nTmp = (int)hInstance; CString strTmp;
    strTmp.Format("the return value is %d", nTmp); if(nTmp <= 32)
    {
    switch(nTmp)
    {
    case 0:
    MessageBox("内存不足!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 2:
    MessageBox("文件名错误!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 3:
    MessageBox("路径名错误!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 11:
    MessageBox("EXE 文件无效!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 26:
    MessageBox("发生共享错误!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 27:
    MessageBox("文件名不完全或无效!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 28:
    MessageBox("超时!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 29:
    MessageBox("DDE 事务失败!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 30:
    MessageBox("正在处理其他 DDE 事务而不能完成该 DDE 事务!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    case 31:
    MessageBox("没有相关联的应用程序!", "Infermation", MB_OK|MB_ICONWARNING);
    break;
    default:
    break;
    }
    }
    else
    MessageBox(strTmp, MB_OK);
      

  2.   

    用CreateProcess执行结果也一样,被调用的exe程序就是打不开,郁闷...
      

  3.   

    还有就是Program Files这个的空格,换个不带空格的路径shell一下试试
      

  4.   

    看看任务管理器中 是否已经有了 Touchvew.exe 进程
      

  5.   

    hellExecute (hwndapp, "open", "NOTEPAD.EXE", "README.TXT", "C:/VIEWER",1) 单/
      

  6.   

    "C:\\Program Files\\kingview\\Touchvew.exe"
    是不是路径的问题??
      

  7.   

    用system试试
    system("\"C:\\Program Files\\kingview\\Touchvew.exe\"");
      

  8.   

    HINSTANCE hInstance = ShellExecute(this->m_hWnd, _T("open"), _T("notePad.exe"), NULL,NULL,SW_SHOW);
    我运行了,没有错误!
      

  9.   

    谢谢各位,找到原因了这个exe程序必须由特定名称的文件才可以打开比如:1.exe 只能由2.exe才行,名称换成3.exe就打不开1.exe了
      

  10.   

    直接在地址栏里面 连接到这个路径试试能打开吗 
    C:\Program Files\kingview\Touchvew.exe
      

  11.   

    单独运行没问题,即直接在地址栏里面 连接到这个路径C:\Program Files\kingview\Touchvew.exe可以运行