1. 程式人生 > >Qt在Windows下把檔案送到回收站

Qt在Windows下把檔案送到回收站

 廢話不多說,直接上函式。

#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()));
}