hur.cn - 华软网

 热门搜索

VC中如何打开文件夹(相对路径)?

  作者:未知    来源:网络    更新时间:2010/9/14
VC中,怎么打开指定的文件夹,文件夹是相对路径,如:./temp/

注:ShellEcecute能打开文件夹,但要求是绝对路径

---华软 网友回答---
注:我就是想另打开个文件夹,类似的ShellExecute,也可以如按键Win + E
不是CFileDialog类型的对话框,而是类似打开“我的电脑”这样的与程序无关的窗体
---华软网友回复---
打开相对路径前,请先SetCurrentDirectory();
---华软网友回复---
相对路径的话你是以什么为参照物?你先找到你参照物的路径再加上你的相对路径就是绝对路径了
---华软网友回复---
要自己写一个函数,用来获得当前可执行程序的全路径; 我有个例子,希望你能帮上你.
CString MyGetPath()
{       
CString sPath;
GetModuleFileName(NULL,sPath.GetBufferSetLength(1023),1024);
sPath.ReleaseBuffer();
int nPos;
nPos = sPath.ReverseFind('\\');
sPath = sPath.Left(nPos);
return sPath;
}
---华软网友回复---
在用相对路径前已经重新用SetCurrentDirectory();函数设置了本地可执行文件的文件夹(GetModuleFileName())为默认路径了

看来得将相对路径转换成绝对路径才行
---华软网友回复---
那使用
C++">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路径后在给他

---华软网友回复---
相对什么的路径,先得到参照物路径,再自己拼接一下,再打开之
---华软网友回复---
好像相对路径转绝对路径用PathCombine就行
但总转换不成功呢?
谁能给个PathCombine例子呢?
---华软网友回复---
行了,可以这样:
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是能自动识别的,也是合法路径。
之前还以为这样错呢,其实没有问题

问题解决,谢谢各位.
---华软网友回复---
D:\./Temp 等同与 D:/Temp 或 D:\\Temp
./表示当前目录,../表示上层(父)目录
---华软网友回复---
引用 9 楼 gxj1680 的回复:
注1:
ShellExecute函数中的目录或文件要用绝对路径……

我跟你的情况一样,但是我想将ShellExecute打开的文件在其他电脑中打开,那么在安装程序过程中就不一定会安在D盘,该如何解决呢
---华软网友回复---
我也遇到了你的问题,你解决了么?
引用 11 楼 huirs23 的回复:
引用 9 楼 gxj1680 的回复:
注1:
ShellExecute函数中的目录或文件要用绝对路径……

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

---华软网友回复---
如果是远程机,得查相关远程调用的函数了
如果是本机,拼前可以先获取相关的路径

引用 11 楼 huirs23 的回复:
引用 9 楼 gxj1680 的回复:
注1:
ShellExecute函数中的目录或文件要用绝对路径……

我跟你的情况一样,但是我想将ShellExecute打开的文件在其他电脑中打开,那么在安装程序过程中就不一定会安在D盘,该如何解决呢
     
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。