废话不多说,直接上函数。
#include <Windows.h>
bool Common::recycleFile(const QString &a_filename)
{
bool ret = true;
SHFILEOPSTRUCT opRecycle;
opRecycle.hwnd = nullptr;
opRecycle.wFunc = FO_DELETE;
opRecycle.pFrom = toWCharT(a_filename);
opRecycle.pTo = L"\0\0";
opRecycle.fFlags = FOF_ALLOWUNDO; //此Flag表示送进回收站
opRecycle.hNameMappings = nullptr;
opRecycle.lpszProgressTitle = L"Recycling files...";
if(SHFileOperation(&opRecycle) != 0)
{
ret = false;
}
if(opRecycle.fAnyOperationsAborted)
{
ret = false;
}
return ret;
}
wchar_t *Common::toWCharT(QString a_string)
{
return const_cast<wchar_t *>(reinterpret_cast<const wchar_t *>(a_string.utf16()));
}