2010-04-29 98 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