2010-04-29 43 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/),並不起作用。

我是shell編程的新手,所以不太確定調試的最佳方式。我試着將調試器附加到explorer.exe,但這似乎不起作用(斷點被禁用,並且我的OutputDebugStrings中沒有任何一個顯示在輸出窗口中)。請注意,我試圖在註冊表中設置「DesktopProcess」,如WinSDK文檔中所述,用於調試shell,但我仍然只能在任務管理器中看到一個explorer.exe - 這樣「可能」就是我爲什麼不能調試它?

任何幫助,將不勝感激!

Regards, Dan。

回答

5

自從您提到我的博客(codemonkeycodes.com)後,我偶然發現了這一點。

你對我的樣品有什麼問題?你使用regsvr32註冊了你的DLL嗎?您使用的是Windows 7的哪個版本,32或64?


更新:

我不能說什麼是或不是爲你工作。我只是從我的站點下載的樣本,遵循的方向和改變功能 STDMETHODIMP CThumbnailProvider :: GetThumbnail ......看起來像

{ 
*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; 
} 

我註冊的DLL,然後創建一個新文件與適當延長,和田田,我有一個很好的黑色縮略圖。

我希望我能幫助你。也許你想給我發電子郵件你的代碼?

+0

嗨。我正在使用x64 Windows7。因爲這不僅僅是你的樣品不適合我 - 這是MS樣品和我自己的代碼,也沒有工作 - 我猜還有別的東西。由於我是Windows shell編程的新手(我的背景是應用程序和遊戲開發),我不知道調試它的最佳方式。我試着將我的調試器(MS VS 2005)附加到explorer.exe,但我沒有看到我的任何跟蹤日誌。 – Dan 2010-05-04 20:22:07

+0

一個愚蠢的問題,我敢肯定你沒有忽視這個,但是你註冊了DLL與regsrv32的64位版本嗎? – Jeremy 2010-05-04 22:30:38

+0

是的,我明確鍵入\ windows \ system32 \ regsvr32.exe。 你知道Windows在什麼時候應該調用我的DllGetClassObject函數嗎?看看它是否到達那將是有用的。 – Dan 2010-05-05 08:55:58

1

我有完全一樣的問題。我無法制作SDK或任何樣本作品。我需要COM示例,因爲我必須調用Microsoft.Jet.OLEDB.4.0,它僅適用於32位系統。

我不能做這項工作:link

如果在編譯時指定AnyCPU這工作。不能讓它爲86:link

這是不錯的XP下工作就像一個魅力:link

這個節目的Adobe有問題的縮略圖的MS與Office 2007(32位):link