无法关闭打开文件名

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 无法删除该文件夹。要解决此问题,您可以尝试:

  • 检查是否有任何打开的资源管理器窗口显示要删除的文件夹/此文件夹中的任何包含文件
  • 检查是否有任何命令提示符已打开,并且其当前目录是否设置为要删除的文件夹
  • 检查您的应用程序(或任何其他应用程序(是否正在使用此文件夹中的任何数据(例如,从此文件夹中打开文本文件的记事本(