質問

カスタムファイルタイプの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、素敵な黒いサムネイルがありました。

あなたの手助けをすることができればいいのに。たぶんあなたは私にあなたのコードを電子メールで送りたいですか?

他のヒント

私はまったく同じ問題です。 SDKやサンプルが機能することはできません。 32ビットシステムでのみ動作するMicrosoft.jet.oledb.4.0に電話する必要があるため、comサンプルが必要です。

私はこの仕事をすることができませんでした: リンク

これは、コンパイル時に任意のCPUが指定されている場合に機能します。 x86で動作させることはできません: リンク

これはXPの下では魅力のように機能していました: リンク

このショーAdobeには、Office 2007(32ビット)でThumbnailとMSに問題がありました。 リンク

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top