[까막] 코딩으로 휴지통 복구하기..  | ActiveX/COM 2003-11-04 오후 6:16:46
까막 (crowback)  까막님께 메시지 보내기까막님을 내 주소록에 추가합니다.까막님의 개인게시판 가기 번호: 16893   / 평점:  (-)  / 읽음:1,749

질문에 답변 하나 달으려다 엄청난 시간이 날라갔네요. 조만간에 모가지가 될지도 ㅡㅜ;


휴지통에 보내기는 많이 보내봤는데.. 휴지통에 있는 넘을 복구하는 방법은 Undocumented라.. MSDN을

찾아봐도 껀덕지 나오는게 없더군요..


결국 쉘폴더를 불러서, 아이템을 얻고, 해당 아이템의 숏컷 핸들러를 얻은다음 Invoke 해주는

방법을 취했습니다.


동작은 잘되더군요..


1. 휴지통의 IShellFolder2 인터페이스를 얻어 온다.

2. IShellFolder2::EnumObjects() 를 이용하여 IEnumIDList 값을 긁어 들인다.

3. IEnumIDList::Next() 메서드를 이용하여, 개별적인 ITEMIDLIST 값들을 하나씩 읽어 온다.

4. 각각 읽어 온넘들을 pidl 이라 치면, 해당하는 IContextMenu 인터페이스를 얻는다.

5. IContextMenu::QueryContextMenu, IContextMenu::GetCommandString, IContextMenu::InvokeCommand

   메서드들을 적당한 인자를 주어 호출하여, 선택된 아이템을 복구한다.


대략 위와 같은 구조로 동작하구요..

 

참고 사항으로

 

휴지통에 떤지기 : SHFileOperation

휴지통을 비우기 : SHEmptyRecycleBin

휴지통에 들은 파일 갯수와 크기 얻기 : SHQueryRecycleBin

 

이런 함수들이 있습니다.


MSDN에서 참고 하실만한 페이지에는

1. Managing the File System

    SHFileOperation 함수를 사용하는 응용예가 가장 자세히, 그리고 Notify와 Recent 연동까지.. 잘 나와있습니다.

2. Shell Functions

    일반적으로 다루는 쉘함수들의 리스트가 쭉 나와 있구요, 평소에 접하지 못하는 혹은 필요한데 못찾던것들 까지

    잘 구분되어 있습니다.


그럼 즐거운 한주 되세요...


이 글에 평점 주기:  
[코멘트]  2003-11-17 17:42:00
조갑열 (cgl777)   조갑열님께 메시지 보내기조갑열님을 내 주소록에 추가합니다.조갑열님의 개인게시판 가기 
ecycleBinDlg.cpp
F:\download\휴지통 복구\RecycleBinDlg.cpp(9) : fatal error C1083: Cannot open include file: 'ShObjIdl.h': No such file or directory
Generating Code...
Error executing cl.exe.
Creating browse info file...
BSCMAKE: error BK1506 : cannot open file '.\Debug\RecycleBinDlg.sbr': No such file or directory
Error executing bscmake.exe.

RecycleBin.exe - 2 error(s), 0 warning(s)
이 에러는 뭘까요..ㅠ.ㅠ?
 
[코멘트]  2003-11-17 19:50:00
까막 (crowback)   까막님께 메시지 보내기까막님을 내 주소록에 추가합니다.까막님의 개인게시판 가기 
ShObjIdl.h' 파일을 찾을 수 없다는 에러 메시지네요..
위의 헤더 파일을 사용하시려면 Platform SDK를 설치하셔야 합니다.

+ Recent posts