VC中如何获得选中文件的路径

VC中如何获得选中文件的路径,第1张

用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++里怎么获取当前执行文件的路径啊等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9280801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存