无法关闭打开文件名
Can't close OPENFILENAME
本文关键字:文件名 更新时间:2023-10-16
我使用 OPENFILENAME 和函数 GetOpenFileName(( 通过 Windows 文件浏览器获取文件位置。
问题是当我想删除所选文件夹时(当程序运行时,我需要这样做时(窗口显示错误:"无法完成操作,因为其中的文件夹或文件在另一个程序中打开">
我知道为什么这样做,但我不知道如何在运行时关闭此文件
谢谢,提前。
编辑:
//Opening Save file
TCHAR *filter = _T("Story File(*.Strory*) *.Story* ");
HWND owner = NULL;
OPENFILENAME ofn;
TCHAR fileName[MAX_PATH] = _T("");
ZeroMemory(&ofn, sizeof(ofn));
ofn.lStructSize = sizeof(OPENFILENAME);
ofn.hwndOwner = owner;
ofn.lpstrFilter = filter;
ofn.lpstrFile = fileName;
ofn.nMaxFile = MAX_PATH;
ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
ofn.lpstrDefExt = _T("");
if (GetOpenFileName(&ofn))
{
}
这段代码是我创建和使用 OPENFILENAME 变量的地方,GetOpenFileName(( 会自动将所选文件锁定为"在程序中打开",并防止在程序运行时对文件夹进行任何修改(如删除或重命名(。但我想禁用此属性。
如果在
OPENFILENAME
GetOpenFileName
中不使用OFN_NOCHANGEDIR
标志,则选择文件并将其设置为当前目录。 正是这个文件夹句柄阻止删除它。 您可以使用OFN_NOCHANGEDIR
标志或在删除文件夹之前更改其他目录。 对Windows目录说 - 你不删除它:
WCHAR path[MAX_PATH];
GetSystemWindowsDirectoryW(path, RTL_NUMBER_OF(path));
SetCurrentDirectoryW(path);
其他一些应用程序拥有要删除的文件夹的打开句柄。如果有任何其他客户端处理存储在文件夹中的数据,则 Windows 无法删除该文件夹。要解决此问题,您可以尝试:
- 检查是否有任何打开的资源管理器窗口显示要删除的文件夹/此文件夹中的任何包含文件
- 检查是否有任何命令提示符已打开,并且其当前目录是否设置为要删除的文件夹
- 检查您的应用程序(或任何其他应用程序(是否正在使用此文件夹中的任何数据(例如,从此文件夹中打开文本文件的记事本(
相关文章:
- 从命令行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 - 空文件名和行号参数