用GetOpenFileName
OPENFILENAME ofn; // common dialog box structure
char szFile[260]; // buffer for filename
HWND hwnd; // owner window
HANDLE hf; // file handle
// Initialize OPENFILENAME
ZeroMemory(&ofn, sizeof(OPENFILENAME));
ofnlStructSize = sizeof(OPENFILENAME);
ofnhwndOwner = hwnd;
ofnlpstrFile = szFile;
ofnnMaxFile = sizeof(szFile);
ofnlpstrFilter = "All\0\0Text\0TXT\0";
ofnnFilterIndex = 1;
ofnlpstrFileTitle = NULL;
ofnnMaxFileTitle = 0;
ofnlpstrInitialDir = NULL;
ofnFlags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
// Display the Open dialog box
if (GetOpenFileName(&ofn)==TRUE)
hf = CreateFile(ofnlpstrFile, GENERIC_READ,
0, (LPSECURITY_ATTRIBUTES) NULL,
OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
(HANDLE) NULL);
引用:msdn
ofnlpstrFile 就是选中的文件名
需要选中文件之后的后续 *** 作来获取到路径,比如他是为了打开文件,或者复制啊,或者创建进程之类的,一般都需要CreateFile这个函数调用,那就好办了,hook这个CreateFile就行了,里面就是路径,ok
希望解决你的问题了
char szDir[MAX_PATH];
memset(szDir, 0, MAX_PATH);
::GetCurrentDirectory(MAX_PATH, szDir);
如果可执行的程序路径在 E:\\D\C\projectexe (这跟源文件路径无关,只跟可执行程序路径有关)
那么应该可用 ifstream in("\\btxt"); 读取btxt
利用windows API获得:
CString GetAppPath() {CStringstrAppPath; // 保存结果
TCHAR szModuleFileName[MAX_PATH]; // 全路径名
TCHAR drive[_MAX_DRIVE]; // 盘符名称,比如说C盘啊,D盘啊
TCHAR dir[_MAX_DIR]; // 目录
TCHAR fname[_MAX_FNAME]; // 进程名字
TCHAR ext[_MAX_EXT]; //后缀,一般为exe或者是dll
if (NULL == GetModuleFileName(NULL, szModuleFileName, MAX_PATH)) //获得当前进程的文件路径
return FALSE;
_tsplitpath_s( szModuleFileName, drive, dir, fname, ext ); //分割该路径,得到盘符,目录,文件名,后缀名
strAppPath = drive;
strAppPath += dir;
return strAppPath;
}
以上就是关于VC中如何获得选中文件的路径全部的内容,包括:VC中如何获得选中文件的路径、VC怎么获取鼠标选中文件的路径。、vc++里怎么获取当前执行文件的路径啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)