制作:KrK (Knuth for Kludge)
#include <stdio.h>
#include <windows.h> // Win32API
//-------------------------------------------------
// ファイルをゴミ箱に移動
// 作成 20140210 KrK
// 引数 filename:移動するファイル名
// 戻り値:移動に成功したTRUE、失敗したFALSE
//-------------------------------------------------
BOOL TrashFile(WCHAR filename[_MAX_PATH])
{
SHFILEOPSTRUCT sfos; // ファイル操作情報
INT rc; // 処理結果
WCHAR opFilename[_MAX_PATH + 1]; // 処理ファイル名
// ファイル名をコピー
wcscpy_s(opFilename, _MAX_PATH, filename);
// 最後に終端文字を追加
opFilename[wcslen(opFilename) + 1] = '\0';
// ファイル操作情報をセット
ZeroMemory(&sfos, sizeof(SHFILEOPSTRUCT));
sfos.hwnd = NULL;
sfos.wFunc = FO_DELETE;
sfos.pFrom = opFilename;
sfos.fFlags = FOF_ALLOWUNDO | // UNDO可(= ゴミ箱に移動)
FOF_NOCONFIRMATION | // 確認メッセージなし
FOF_SILENT; // プログレス非表示
// ファイル削除
rc = SHFileOperation(&sfos);
// 成功したか?
if (!rc)
{
return TRUE;
}
else
{
return FALSE;
}
}
WCHAR filename[_MAX_PATH]; // ファイル名
// ファイルを削除
BOOL rc = TrashFile(filename);
// ファイル削除失敗
if (rc == FALSE)
{
~;
}