파일이동 - sample - SHFileOperation

2017. 3. 3. 13:56IT-개발/winapi 및 MFC

반응형


폴더 들을 포함한 파일들 전체의 무조건 이동, 동일 폴더 명이 보이면 그냥 합침.



  string strPreNetLinkDownPath = "C:\DDD";

  string strNextNetLinkDownPath = "C:\AAA";   // C:\AAA\DDD 라는 폴더가 이미 있음.


SHFILEOPSTRUCT shfo;

TCHAR pszTo[1024] = {0,};        // 이렇게 따로 Buffer를 잡아서 처리해주지 않으면 이상하게 동작않함.

TCHAR pszFrom[1024] = {0,};

TCHAR pszTitle[MAX_PATH] = _T("파일이동");

memset(pszTo, 0, sizeof(pszTo));

memset(pszFrom, 0, sizeof(pszFrom));


_tcscpy(pszTo, strNextNetLinkDownPath.data());

_tcscpy(pszFrom, strPreNetLinkDownPath.data());


ZeroMemory(&shfo, sizeof(shfo));

if (AfxGetMainWnd() != NULL)

shfo.hwnd = AfxGetMainWnd()->m_hWnd;

else

shfo.hwnd = NULL;


shfo.wFunc = FO_MOVE;            // Copy sample은 많은데, Move sample은 작더라

shfo.lpszProgressTitle=pszTitle;

shfo.pTo=pszTo;

shfo.pFrom=pszFrom;

shfo.fFlags=FOF_NOCONFIRMATION|FOF_NOCONFIRMMKDIR|FOF_SILENT|FOF_NO_UI|FOF_NOERRORUI; 


int ret = SHFileOperation(&shfo);   // ret으로  동작의 성패를 보장할 수 없다.


SHFileOperation msdn