サムネイルプロバイダーが機能していません
-
02-10-2019 - |
質問
カスタムファイルタイプのWindows Explorerサムネイルハンドラーを書き込もうとしています。プレビューペインのためにこれを正常に動作させていますが、サムネイルのために機能させるのに苦労しています。
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)
また、Win SDKサンプルを使用してみましたが、それはうまくいきません。また、この記事のサンプルプロジェクト(http://www.codemonkeycodes.com/2010/01/11/ithumbnailprovider-re-visited/)、そしてそれはうまくいきません。
私はシェルプログラミングが初めてなので、これをデバッグする最良の方法が本当にわかりません。デバッガーをExplorer.exeに添付しようとしましたが、それは機能しないようです(ブレークポイントが無効になり、出力ウィンドウに出力を出力するものはありません)。シェルをデバッグするためにWinSDKドキュメントで説明されているように、レジストリに「desktopprocess」を設定しようとしましたが、タスクマネージャーにExplorer.exeを1つだけ見ています。デバッグ??
これに関する助けは大歓迎です!
よろしく、ダン。
解決
あなたが私のブログ(codemonkeycodes.com)に言及して以来、私はこれに出くわしました。
私のサンプルでどのような問題を抱えていますか? regsvr32を使用してDLLを登録しましたか? 32または64のWindows7のバージョンは何ですか?
アップデート:
何があなたのために働いているのか、何が働いていないのかは言えません。私は自分のサイトからサンプルをダウンロードしたばかりで、指示に従って、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を登録してから、適切な拡張機能を備えた新しいファイルを作成しました。TADA、素敵な黒いサムネイルがありました。
あなたの手助けをすることができればいいのに。たぶんあなたは私にあなたのコードを電子メールで送りたいですか?