VC中,怎么打开指定的文件夹,文件夹是相对路径,如:./temp/注:ShellEcecute能打开文件夹,但要求是绝对路径

解决方案 »

  1.   

    注:我就是想另打开个文件夹,类似的ShellExecute,也可以如按键Win + E
    不是CFileDialog类型的对话框,而是类似打开“我的电脑”这样的与程序无关的窗体
      

  2.   

    打开相对路径前,请先SetCurrentDirectory();
      

  3.   

    要自己写一个函数,用来获得当前可执行程序的全路径; 我有个例子,希望你能帮上你.
    CString MyGetPath()
    {       
    CString sPath;
    GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024);
    sPath.ReleaseBuffer();
    int nPos;
    nPos = sPath.ReverseFind('\\');
    sPath = sPath.Left(nPos);
    return sPath;
    }
      

  4.   

    在用相对路径前已经重新用SetCurrentDirectory();函数设置了本地可执行文件的文件夹(GetModuleFileName())为默认路径了看来得将相对路径转换成绝对路径才行
      

  5.   

    那使用
    GetShortPathName
    The GetShortPathName function retrieves the short path form of a specified input path. DWORD GetShortPathName(
      LPCTSTR lpszLongPath,  // null-terminated path string
      LPTSTR lpszShortPath,  // short form buffer
      DWORD cchBuffer        // size of short form buffer
    );
    转成8.3路径后在给他
      

  6.   

    好像相对路径转绝对路径用PathCombine就行
    但总转换不成功呢?
    谁能给个PathCombine例子呢?
      

  7.   

    行了,可以这样:
    wchar_t wch[MAX_PATH];
    ::PathCombine(wch, _T("D:"), _T("./Temp"));
    然后调用
    ::ShellExecute(this->GetSafeHwnd(), _T("open"), wch, NULL, NULL, SW_SHOW);
    就o了注1:
    ShellExecute函数中的目录或文件要用绝对路径,相对路径不行注2:
    其实调用PathCombine拼出来的字符串内容是类似: D:\./Temp
    对这样的格式类型,系统或ShellExecute是能自动识别的,也是合法路径。
    之前还以为这样错呢,其实没有问题问题解决,谢谢各位.
      

  8.   

    D:\./Temp 等同与 D:/Temp 或 D:\\Temp
    ./表示当前目录,../表示上层(父)目录
      

  9.   

    我跟你的情况一样,但是我想将ShellExecute打开的文件在其他电脑中打开,那么在安装程序过程中就不一定会安在D盘,该如何解决呢