Car*_*arl 1 c++ winapi file getopenfilename
我使用 OPENFILENAME 和函数 GetOpenFileName() 通过 Windows 文件浏览器获取文件位置。
问题是当我想删除所选文件夹时(当程序运行并且我需要执行此操作时)窗口显示错误:“操作无法完成,因为其中的文件夹或文件已在另一个程序中打开”
我知道为什么会这样做,但我不知道如何在运行时关闭该文件
提前致谢。
编辑 :
//Opening Save file
TCHAR *filter = _T("Story File(*.Strory*)\0*.Story*\0");
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))
{
}
Run Code Online (Sandbox Code Playgroud)
这段代码是我创建和使用 OPENFILENAME 变量的地方,GetOpenFileName() 会自动将所选文件锁定为“在程序中打开”,并防止在程序运行时对文件夹进行任何修改(例如删除或重命名)。但我想禁用这个属性。
如果您不在目录的打开句柄中使用标志OFN_NOCHANGEDIR,您可以在其中选择文件并将其设置为当前目录。正是这个文件夹句柄防止删除它。您可以使用标志或在删除文件夹之前将当前目录更改为另一个目录。对 windows 目录说 - 你不能删除它:OPENFILENAMEGetOpenFileNameOFN_NOCHANGEDIR
WCHAR path[MAX_PATH];
GetSystemWindowsDirectoryW(path, RTL_NUMBER_OF(path));
SetCurrentDirectoryW(path);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
698 次 |
| 最近记录: |