2010-04-29 6 views
4

사용자 지정 파일 형식에 대한 Windows 탐색기 축소판 핸들러를 작성하려고합니다. 미리보기 창에서 제대로 작동하지만 축소판 이미지가 제대로 작동하지 않는 문제가 있습니다.썸네일 공급자가 작동하지 않습니다.

Windows는 DllGetClassObject 진입 점을 호출하려하지 않은 것처럼 보입니다.

계속하기 전에 Windows 7과 관리되지 않는 C++를 사용하고 있습니다.

HKCR\CLSID\<my guid> 
HKCR\CLSID\<my guid>\InprocServer32 (default value = path to my DLL) 
HKCR\CLSID\<my guid>\InprocServer32\ThreadingModel (value = "Apartment") 
HKCR\.<my ext>\shellex\{E357FCCD-A995-4576-B01F-234630154E96} (value = my guid) 

나는 또한 승리 SDK 샘플을 사용하여 시도했다, 그것은 작동하지 않습니다

나는 레지스트리에 다음 값을 등록했습니다. 또한이 기사의 샘플 프로젝트 (http://www.codemonkeycodes.com/2010/01/11/ithumbnailprovider-re-visited/)가 작동하지 않습니다.

저는 쉘 프로그래밍에 익숙하지 않으므로 이것을 디버깅하는 가장 좋은 방법은 아닙니다. explorer.exe에 디버거를 연결하려고했지만 작동하지 않는 것 같습니다 (중단 점이 비활성화되고 OutputDebugStrings가 출력 창에 표시되지 않습니다). 필자는 셸 디버깅을 위해 WinSDK 문서에 설명 된대로 레지스트리에서 "DesktopProcess"설정을 시도했지만 작업 관리자에서 하나의 explorer.exe 만 볼 수 있습니다 - 그래서 "할 수 있습니다"라는 이유가 될 수 있습니다 그것을 디버깅 ??

위의 사항에 대한 도움을 주시면 대단히 감사하겠습니다.

감사합니다. Dan.

답변

5

내 블로그 (codemonkeycodes.com)에 대해 언급 한 이래로 나는 비틀 거리며 넘어졌습니다.

샘플에 어떤 문제가 있습니까? regsvr32를 사용하여 DLL을 등록 했습니까? 32 또는 64 버전의 Windows 7 버전은 무엇입니까?


업데이트 :

내가 또는 당신을 위해 작동하지 않는 것을 말할 수 없습니다. 난 그냥, 내 사이트에서 샘플을 다운로드 한 방향을 따라 나는 DLL을 등록하고 적절한 확장자를 가진 새 파일을 생성

{ 
*phbmp = NULL; 
*pdwAlpha = WTSAT_UNKNOWN; 

ULONG_PTR token; 
GdiplusStartupInput input; 
if (Ok == GdiplusStartup(&token, &input, NULL)) 
{ 
    //gcImage.LogBuffer(); 
    Bitmap * pBitmap = new Bitmap(188, 141); 
    if(pBitmap) 
    { 
     Color color(0, 0, 0); 
     pBitmap->GetHBITMAP(color, phbmp); 
    } 
} 

GdiplusShutdown(token); 

if(*phbmp != NULL) 
    return NOERROR; 

return E_NOTIMPL; 
} 

처럼 보이도록하는 기능 STDMETHODIMP CThumbnailProvider ::의 getThumbnail을 ... 변경 그리고 tada, 나는 멋진 검은 색 섬네일을 가졌다.

도와 드리겠습니다. 코드를 전자 메일로 보내시겠습니까?

+0

안녕하세요. x64 Windows7을 사용하고 있습니다. 나를 위해 작동하지 않는 샘플뿐 아니라 MS 샘플과 내 자체 코드도 모두 작동하지 않습니다. 다른 것을 생각해 보았습니다. 필자는 Windows 셸 프로그래밍에 익숙하지 않았기 때문에 (배경은 응용 프로그램 및 게임 개발과 관련되어 있음), 디버깅을위한 최선의 방법을 잘 모릅니다. explorer.exe에 내 디버거 (MS VS 2005)를 연결하려고 시도했지만 추적 로그가 표시되지 않습니다. – Dan

+0

어리석은 질문이며, 당신이 이것을 간과하지 않았 음을 확신하지만 regsrv32의 64 비트 버전으로 DLL을 등록 했습니까? – Jeremy

+0

네, \ windows \ system32 \ regsvr32.exe에 명시 적으로 입력했습니다. Windows에서 내 DllGetClassObject 함수를 호출해야하는 시점을 알고 계십니까? 거기에 도달했는지 확인하는 것이 유용 할 것입니다. – Dan

1

정확히 같은 문제가 발생했습니다. 나는 SDK 또는 샘플 작업을 할 수 없다. 32 비트 시스템에서만 작동하는 Microsoft.Jet.OLEDB.4.0을 호출해야하기 때문에 COM 샘플이 필요합니다. 컴파일 할 때 anycpu를 지정하는 경우link

이 작동 :

나는이 일을 couldnt한다.칸트는 x86 용 작동합니다이 XP에서 멋 졌던 매력처럼 작동 link

:link

어도비는 오피스 2007 (32 비트)와 썸네일 석사 문제가 있었다이 쇼 :link

관련 문제