본문 바로가기
C & C++/C & C++

[TIP] 파일 휴지통에 버리기

by izen8 2011. 12. 14.
반응형
//ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
파일 휴지통에 버리기

파일을 휴지통에 버리는 함수 소스 코드는 아래와 같다. 아래의 함수에서 bUndo 를 true 로 설정하면 지정된 파일을 휴지통에 버리게 된다.

본 함수의 핵심 기능은 SHFileOperation 함수를 사용하는 것이다. 본 함수를 컴파일하기 위해서는 shellapi.h 파일과 shell32.lib 가 필요하다.

502: /**
503: * @brief 파일을 휴지통에 버린다.
504: * @param pszFileName 파일 이름
505: * @param bUndo       파일을 휴지통에 저장할 것인가?
506: * @returns 성공하면 TRUE 를 리턴하고 그렇지 않으면 FALSE 를 리턴한다.
507: */
508: BOOL DeleteFile2( const char * pszFileName, bool bUndo )
509: {
510:   if( bUndo )
511:   {
512:     SHFILEOPSTRUCT sttFile;
513:     char  szFileName[1024];
514:     int   iLen;
515:
516:     iLen = _snprintf( szFileName, sizeof(szFileName), "%s", pszFileName );
517:     if( iLen >= sizeof(szFileName) ) return FALSE;
518:     szFileName[iLen+1] = '\0';
519:     memset( &sttFile, 0, sizeof(sttFile) );
520:
521:     sttFile.wFunc = FO_DELETE;
522:     sttFile.pFrom = szFileName;
523:     sttFile.fFlags = FOF_ALLOWUNDO | FOF_NOCONFIRMATION | FOF_NOERRORUI;
524:     sttFile.fAnyOperationsAborted = false;
525:
526:     if( SHFileOperation( &sttFile ) == 0 )
527:     {
528:       TRACE( "SHFileOperation error(%d)\n", GetLastError() );
529:       return TRUE;
530:     }
531:
532:     return FALSE;
533:   }
534:
535:   return DeleteFile( pszFileName );
536: }

//ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
휴지통 비우기
SHEmptyRecycleBin(NULL, NULL, SHERB_NOCONFIRMATION);

반응형

'C & C++ > C & C++' 카테고리의 다른 글

내문서 폴더 경로  (0) 2011.12.14
바탕화면 폴더 경로  (0) 2011.12.14
정수화 함수(더블형 정수화)  (0) 2011.12.14
파일 복사 삭제, 덮어쓰기  (0) 2011.12.13
[API] 프로세스 관리 02  (0) 2011.11.24

댓글