findexexecutable在c++中截断文件名
FindExecutable truncates file name in C++
FindExecutable
在结果缓冲区中返回一个截断的文件名。是由于事实,文件名是超过8个字符?
strPath = "test12345.exe";
CString strDiraa = "c:\test\test";
TCHAR szExe[1024];
::FindExecutable(
strFile, // pointer to filename
strDir.IsEmpty() ? 0 : LPCTSTR(strDir), // pointer to default directory
szExe // result-buffer
);
szExe
是c:testtestTEST12~1.EXE
,但应该是c:testtestTEST12345.EXE
。
是否有办法获得正确的名称?
是的,FindExecutable
给了你一个"短"路径名:它是一个路径名,其中所有文件夹和文件名被构造为8个字符(加上扩展名),使用时髦的DOS语法(~1
的东西)。
在这里阅读更多关于路径名的信息:命名文件、路径和命名空间
长话短说,你必须在"DOSified"路径名上使用GetFullPathName来获得完整的文件路径:
TCHAR szExe[1024];
::FindExecutable(
strFile, // pointer to filename
strDir.IsEmpty() ? 0 : LPCTSTR(strDir), // pointer to default directory
szExe // result-buffer
);
TCHAR fullPathName[1024];
GetFullPathName(szExe, sizeof(fullPathName), fullPathName, 0);
相关文章:
- 从命令行c++发送文本文件名
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- 如何在CPP的给定目录中列出UTF编码的文件名?
- 在Visual Studio 2019中保存时ReadDirectoryChangesW文件名的问题
- C++:在Windows中浏览名称中带有点的文件名
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 不带预处理器的调用方法/文件的文件名/行号
- 在 C++ 中为文件名添加时间戳
- 为什么当我在 std::string 中打开文件名的 fstream 时出现"no matching function"错误?
- 如何将文件名作为参数传入并正确打开?
- 如何在目录及其子文件夹中构建文件名字符串向量?
- 要求用户输入C++输出文件名
- 从Arduino SD卡模块到Array的文件名
- 如何使用打印到 PDF 打印机在 MFC 和 CView 中以编程方式打印而不提示输入文件名?
- C++ 从变量导入文件名
- 从 Makefile 中的 $@ 获取文件名
- VSCode C++调试文件名中包含中文字符的文件时插件损坏
- _CrtSetAllocHook - 空文件名和行号参数