본문 바로가기
Application/Delphi Lecture

SHFileOperation 함수 설명

by 현이빈이 2008. 8. 13.
반응형

[함수 원형]

WINSHELLAPI  int  WINAPI  SHFileOperation( LPSHFILEOPSTRUCT lpFileOp );



[SHFILEOPSTRUCT 구조체]

typedef struct _SHFILEOPSTRUCT{
    HWND         hwnd;
    UINT         wFunc;
    LPCSTR       pFrom;
    LPCSTR       pTo;
    FILEOP_FLAGS fFlags;
    BOOL         fAnyOperationsAborted;
    LPVOID       hNameMappings;
    LPCSTR       lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;



[파라미터]

hwnd  파일 동작 상태에 대하여 정보를 출력하기 위한 대화 상자의 윈도우 핸들

wFunc 수행할 동작. 이 멤버는 다음 값 중 하나가 될 수 있다.

    FO_COPY : pFrom 멤버에 정의된 폴더 또는 파일로부터 pTo 멤버에 정의된 폴더 또는 파일로 복사를 수행한다.

    FO_DELETE : pFrom 멤버에 정의된 폴더 또는 파일을 삭제한다. (pTo는 무시된다.)

    FO_MOVE : pFrom 멤버에 정의된 폴더 또는 파일로부터 pTo 멤버에 정의된 폴더 또는 파일을 이동시킨다.

    FO_RENAME : pFrom에 정의된 폴더 또는 파일의 이름을 변경한다.

pFrom 하나 또는 그 이상의 소스 파일로 채워진 버퍼의 주소. 다중 파일 이름은 널로 구분되어야 한다.그리고 파일 이름의 끝은 더블 널로 종결되어야 한다. ex) a.txt\0b.txt\0c.txt\0\0 (파일명 사이에는 NULL, 파일의 끝은 더블 NULL)

pTo 목적지 파일 또는 디렉터리의 이름을 포함하는 버퍼의 주소. 버퍼는 fFlags가 FOF_MULTIDESTFILES일 때 다중 목적지가 될 수 있다. 다중 이름은 pFrom과 같이 NULL로 구분되어야하며 더블 NULL로 끝나야 한다.
fFlags 파일 동작을 제어하는 플래그들. 이 멤버는 다음 플래그의 조합이 될 수 있다.
    FOF_ALLOWUNDO : Ctrl + Z 등에 의한 Undo 기능을 지원한다.
    FOF_CONFIRMMOUSE : 아직 지원되지 않는다.
    FOF_FILESONLY : *.*이 파일로 지정되었을 때, 파일만 사용하도록 한다.
    FOF_MULTIDESTFILES : pTo 멤버에 다중 목적지를 허용하도록 한다.
    FOF_NOCONFIRMATION : 표시되는 모든 대화 상자의 물음에 대하여 자동으로 Yes를 선택하도록 한다. 그러므로 이 플래그가
                                         사용되면 사용자가 누를 필요가 없다.
    FOF_NOCONFIRMMKDIR : 폴더를 생성해야 할 때 물어보지 않고 폴더를 생성한다.
    FOF_NOCOPYSECURITYATTRIBS : 보안 속성.
    FOF_NOERRORUI : 에러 발생 시 사용자에게 표시하지 않는다.
    FOF_RENAMEONCOLLISION  : 파일 복사, 이동, 변경 시 이미 해당 폴더에 이름이 존재할 때 새 이름으로 동작되도록 한다.
    FOF_SILENT : 프로그래스 대화 상자를 표시하지 않는다.
    FOF_SIMPLEPROGRESS : 파일 이름을 제외한 프로그래스바만 표시한다.
    FOF_WANTMAPPINGHANDLE : FOF_RENAMEONCOLLISION 플래그 사용 시 hNameMappings를 이름 변경될 정보를 채우도록
                                                한다.
fAnyOperationsAborted 파일 동작이 완료되기 전에 사용자가 취소한 경우 이 값은 TRUE를 갖는다. 그 밖에는 FALSE가 된다.
hNameMappings ^**^ 즐~
Handle to a file name mapping object that contains an array of SHNAMEMAPPING structures. Each structure contains the old and new path names for each file that was moved, copied, or renamed. This member is used only if the fFlags member includes the FOF_WANTMAPPINGHANDLE flag. The handle must be freed by using the SHFreeNameMappings function.
lpszProgressTitle 프로그래스 대화 상자에 타이틀로 사용될 문자열의 주소를 표시한다. 이 멤버는 fFlags의
                             FOF_SIMPLEPROGRESS 플래그를 사용해야 유효하다.

만일 pFrom 또는 pTo 멤버들이 전체 경로를 포함하지 않는다면, 현재 경로는 GetCurrentDirectory() 함수에 의해 얻어지는 경로가 유효한 경로가 된다.

반응형