2009-08-03 3 views
1

특수 폴더 아이콘을 추출 나는 Vista에서 그러나, 내 그림 .. 등 및 XP에서의 작업을 잘, mydocs 다음과 같은 특수 폴더에 대한 명시 적 nIconIndex을 통과 여기아이콘 추출 비스타

ExtractIconEx(Environment.SystemDirectory + "\\shell32.dll",ncIconIndex, handlesIconLarge, handlesIconSmall, 1); 

을 메신저 사용하고 그 올바른 아이콘을 검색하지 않습니다. 노란색 폴더 아이콘을 검색합니다. Cn 아무도 이것 좀 도와주세요 ...

답변

1

Vista는 SHGetStockIconInfo라는 새로운 API를 추가했지만 내 문서 AFAIK를 지원하지 않습니다. 하지만 그것은 XP와 Vista 모두에서 작동해야하는 메서드이므로 중요하지 않습니다. 사용자가 사용자 정의 아이콘을 선택하면 현재 솔루션이 작동하지 않고 하드 코딩 된 시스템 DLL 만보고 있으면 언제든지 바뀔 수 있습니다.

그래서, 당신이해야 할 일은 관심있는 쉘 폴더 (SHGetFolderPath 및 friends)에 경로 또는 PIDL을 가져 와서 해당 경로/PIDL을 SHGetFileInfo에 전달하는 것입니다. SHGetFileInfo는 아이콘 핸들 또는 시스템 이미지 목록의 색인을 제공 할 수 있습니다.

내가 그 기능을위한 .NET에 해당이 무엇인지 모르겠지만, 당신은 알아낼 수, 또는 IconLib이 처리를위한 비교에서 파일 아이콘에서 아이콘을 추출 이상 동안 PInvoke를

+0

앤더스에게 감사드립니다 ... 나는 내가 할 수 있다고 생각합니다. – Anees

1

IconLib library at codeproject을 확인하십시오.

+0

를 사용해야합니다. NET, 나는 Anees가 요구하는 것을하지 않는다고 생각합니다. Windows 쉘 API에서 특수 폴더를위한 아이콘을 얻습니다. –

+0

당신은 절대적으로 마이클입니다. 감사합니다. – Anees

0

.NET에서이 분야의 성공 사례를 본 적이 있는데 (이 기사는 VB.NET으로 작성되었습니다)이 기사에 나와 있습니다.

http://www.codeproject.com/KB/cpp/VbNetExpTree.aspx

내 $ 0.02 쉘 API를 사용하여 작업하는 때문에 필요한 COM의 상호 운용성의 수준과 API의의 복잡성 .NET에서 매우 고통스러운 것입니다.