【发布时间】:2022-01-12 09:15:38
【问题描述】:
我正在尝试编写将文件移动到垃圾箱的函数。 例如,当我使用带有 unicode 和空格的文件路径时,我无法将其发送到回收站。
...\Yönü Değiştir\Yönü Değiştir Sil.txt
我在论坛上找到了很多例子。 但我无法正确运行。
我哪里做错了, 你能帮我把函数写正确吗?
我的函数和代码是这样的:
. includes...
.
.
bool recycle_file_folder(std::string path) {
std::wstring widestr = std::wstring(path.begin(), path.end());
const wchar_t* widecstr = widestr.c_str();
SHFILEOPSTRUCT fileOp; //#include <Windows.h>;
fileOp.hwnd = NULL;
fileOp.wFunc = FO_DELETE;
fileOp.pFrom = widecstr; /// L"C:\\Users\\USER000\\Documents\\Yönü Değiştir\\Yönü Değiştir Sil.txt";
fileOp.pTo = NULL;
fileOp.fFlags = FOF_ALLOWUNDO | FOF_NOERRORUI | FOF_NOCONFIRMATION | FOF_SILENT;
int result = SHFileOperation(&fileOp);
if (result != 0) {
return false;
}
else {
return true;
}
}
int main()
{
std::filesystem::path p("C:\\Users\\USER000\\Documents\\Yönü Değiştir\\Yönü Değiştir Sil.txt");
recycle_file_folder(p.string());
return 0;
}
现在,当您像这样指定文件时,它可以成功运行:
fileOp.pFrom = L"C:\\Users\\USER000\\Documents\\Yönü Değiştir\\Yönü Değiştir Sil.txt";
如何调整它以适用于所有文件?
【问题讨论】:
-
return result == 0;smh