2010-02-25 4 views
2

InDesign CS2와 CS3가 모두 설치되어 있습니다. 둘 다 .indd 확장자를 가진 파일을 사용합니다. Windows는 사용할 아이콘을 어떻게 알 수 있습니까? 올바른 아이콘 (예 : CS2 파일은 CS2 아이콘, CS3 파일은 CS3 아이콘)을 사용합니다.Windows는 어떻게 아이콘을 탐색기 셸의 파일에 연결합니까?

어떻게 Windows에서이를 수행 할 수 있는지 알고 있습니까?

그리고 내 프로그램에서이 버전 감지 시스템을 추출하거나 어떻게 사용할 수 있습니까?

편집 :

이 쉘 확장 - 아이콘 처리기 답변 주셔서 감사합니다. 나에게 새로운 뭔가. 그러나 InDesign이 InDesign 파일의 버전을 감지하기 위해 제공하는 IconHandler에 연결할 수있는 방법이 있습니까?

+0

InDesign의 처리기에서 해당 정보를 가져올 수있을 것 같지 않습니다. 그러나 그 파일 유형에 대해 등록 된 다른 셸 확장이 있는지 확인하는 것이 좋습니다. 예를 들어 해당 값을 제공 할 수있는 속성 인터페이스를 구현할 수 있습니다. 마우스 오른쪽 버튼을 클릭하여 파일 속성을 가져 와서 자세히 탭을 확인하십시오. 저는 cs2와 cs3 파일을 16 진수 편집기로로드하고 처음 20 바이트 정도를 봅니다. 많은 파일 형식에서 헤더는 일반적이며 버전 번호 (반드시 2 또는 3이 아님)가 포함되어 있으므로이를 식별 할 수 있습니다. –

+0

@the_mandrill 그것이 제가 처음 바이트를 읽는 것을 말합니다. 그러나 버전 정보는 고정되어 있지 않으며 때로는 부동 상태입니다.그래서 더 신뢰할 수있는 방법을 찾고 있습니다. – Kugel

+0

이 경우 파일 형식이 게시되거나 역 엔지니어링 된 경우가 아니라면이 작업을 수행 할 수 없습니다. 한 가지 가능성은 Adobe의 아이콘 핸들러를 호출 한 다음 사용 된 아이콘을 감지하는 것일 수 있습니다. 그러나 이것은 신뢰할 수 없으며 물론 핸들러가 시스템에 설치되어 있어야합니다 (보증하지 못할 수도 있고 그렇지 않을 수도 있습니다). 그것을 재분배 할 수 있어야한다). –

답변

5

아이콘 처리기 셸 확장을 작성해야합니다. IExtractIcon에 대한 MSDN 설명서를 참조하십시오. 기본 메커니즘은 셸 확장을 만들고 원하는 파일 형식 (HKEY_CLASSES_ROOT/.indd)에서 아이콘 처리기를 등록한 다음 셸에서 처리기를로드하고 파일 정보를 전달하고 반환 할 아이콘을 요청하는 것입니다. 아이콘이 아닌 썸네일 비트 맵을 제공하려면 IExtractImage 메소드가 있습니다.

메모리 누수 또는 충돌로 인해 탐색기와 파일 열기/저장 대화 상자를 표시하는 다른 응용 프로그램에 영향을 줄 수 있으므로 셸 확장 핸들러 작성시 특히주의해야합니다.

+0

당신은 내 질문의 첫 부분에 대답했습니다. 다른 부분은 아마도 불가능합니다. – Kugel

1

거의 확실하게 shell icon extension handler을 설치합니다. 자신의 을 작성하는 것은 잘 문서화되지 않았거나 전혀 문서화되지 않은 파일 형식으로 버전을 감지하는 방법을 아는 것은 매우 까다 롭습니다.

+0

xp가 아닌 Windows 7을 지원하는 프로젝트에 대한 링크를 제공 할 수 있습니까? – Beno

2

일부 파일의 경우 레지스트리 항목이 HKEY_CLASSES_ROOT\<file extension here>\DefaultIcon이지만 대부분의 파일은 더 친숙한 이름으로 매핑됩니다 (예 : .pdf\(Default) ->AcroExch.Document (Adobe Reader가 설치된 경우) 당신이 AcroExch.Document에 레지스트리를 따라 가서 하나

  • DefaultIcon또는
  • AcroExch.Document\CLSID\(Default) 일부 GUID입니다 권리가 있음을 볼 수있다이 경우

    . 그런 다음, HKEY_CLASSES_ROOT\CLSID\<insert that guid here>를 따라이 키가 DefaultIcon

이 포함되어 있는지 알 수 있습니다 ... 그리고 DefaultIcon이 아이콘이로드되는 곳입니다.

충분히 명확한 희망. 나는 당신의 특별한 경우에 대해 모른다. 그러나 레지스트리에 구별이 있어야한다.

+0

고정 아이콘의 경우이지만 OP는 파일의 버전이 두 개 있지만 확장자가 동일한 경우 프로그래밍 방식으로 아이콘 유형을 전환하는 방법에 대해 질문했습니다. GUID에 두 번째 수준의 간접 참조를 수행해야하는 것에 대해 언급 한 경우 +1 –

관련 문제