1 Recycle
À©µµ¿ìÁî Ä¿¸Çµå ¶óÀο¡¼ ÆÄÀÏ »èÁ¦½Ã ÈÞÁöÅëÀ¸·Î º¸³»±â À§ÇÑ Åø. ´ýÇÁ ÆÄÀÏÀ̳ª ·Î±× ÆÄÀÏÀ» »èÁ¦Çϱâ À§Çؼ ¹èÄ¡ ÆÄÀÏÀ» ¸¸µé¾î ¾²´Âµ¥, DEL ¸í·É¾î·Î Àϰý »èÁ¦ÇÏ´Ùº¸´Ï, ÀÌ ÆÄÀϵéÀÌ ÈÞÁöÅëÀ¸·Î °¡Áö ¾Ê´Â´Ù. °¡²ûÀÌÁö¸¸ »èÁ¦µÈ ÆÄÀÏÀ» ´Ù½Ã ºÁ¾ßÇÒ °æ¿ì¿¡´Â ³°¨Çß´Ù.
2 ¼Ò½º
SHFileOperation ÇÔ¼ö¸¸ ¾²¸é ³¡À̶ó´Â °Å. ±×·±µ¥ ¿Ö À¯´ÏÄÚµå·Î ÄÄÆÄÀÏÇϸé Á¦´ë·Î ¾È µ¹¾Æ°¡´Â °É±î?
#include <windows.h>
#include <direct.h>
#include <stdio.h>
#include <shlwapi.h>
#include <tchar.h>
#pragma comment(lib, "shlwapi.lib")
int main(int argc, LPCTSTR argv[])
{
if (argc < 2)
{
_tprintf(_T("Usage: recycle file1 file2 ..."));
return 0;
}
bool error = false;
TCHAR cwd[1024];
ZeroMemory(cwd, sizeof(cwd));
_tgetcwd(cwd, 1024);
if (cwd[lstrlen(cwd)-1] != '\\')
_tcscat_s(cwd, _ARRAYSIZE(cwd), _T("\\"));
for (int i=1; i<argc; ++i)
{
TCHAR target[2048];
ZeroMemory(target, sizeof(target));
if (PathIsRelative(argv[i]))
_stprintf_s(target, _ARRAYSIZE(target), _T("%s%s"), cwd, argv[i]);
else
lstrcpy(target, argv[i]);
target[lstrlen(target)+1] = _T('\0');
SHFILEOPSTRUCT op;
ZeroMemory(&op, sizeof(op));
op.hwnd = GetDesktopWindow();
op.wFunc = FO_DELETE;
op.pFrom = target;
op.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_SILENT;
if (SHFileOperation(&op))
{
LPVOID buffer = NULL;
DWORD flag = FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS;
DWORD language = MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US);
DWORD errorCode = GetLastError();
if (FormatMessage(flag, NULL, errorCode, language, reinterpret_cast<LPTSTR>(&buffer), 0, NULL))
{
_tprintf(reinterpret_cast<LPCTSTR>(buffer));
LocalFree(buffer);
}
error = true;
}
}
return error ? -1 : 0;
}
ÄÄÆÄÀÏÇÑ ½ÇÇà ÆÄÀÏ
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)