ATL(Visual Studio 2008)を使用してWindowsシェル拡張を作成しました。 > - Vista(IShellFolder)のシェル拡張のデバッグに関する問題
- IShellFolder/IShellView - :それは、以下のモジュールがあり、各モジュールは、登録のために、独自の.RGSファイルを持つ独立したATLシンプルオブジェクトでありますポップアップ用のメニューファイルとフォルダ
- IShellIconOverlayIdentifierは - >ファイルのカスタムプロパティページの場合&フォルダのプロパティ
上記はWinXPでうまく動作し、WinXPでこのシェル拡張をデバッグすることができます。しかし、すぐにVistaに切り替えると、私は(2)と(4)のメソッド呼び出ししか得られません。ドライブはWindowsエクスプローラで作成されますが、クリックすると基本的なメソッドは呼び出されません。 私が右クリックすると(2)が呼び出されますが、ファイルまたはフォルダの「プロパティ」を選択すると、(4)のコードが表示されます。
Vista上で(1)と(3)に欠けているインタフェースがありますか?私は、MSDNのVista用シェル拡張を記述するための完全で詳細な文書を見つけることができませんでした。私はすでにシェル拡張に関するCodeProjectの記事を読んでいました。
私はかなりソリューション権を得ることができませんでした。私は、ファイアウォールの "許可"リストにverclsid.exeを含めましたが、デバッグを開始すると、 'explorer.exe'が表示されます: '\ Debug \ ShellExtension.dll'がロードされました 'explorer.exe':アンロード '.. 。\ Debug \ ShellExtension.dll ' ブレークポイントにヒットしません。 – A9S6
ファイアウォールとは関係ありません。あなたがdll init関数(あなたは決して*行うべきではない)の中でいくつかのネットワークをやっていない限り。 デバッグウィンドウの "(un)loaded"行はここでは役に立ちません。 dllがロードされているプロセスのinit関数をチェックインできます。 – Stefan
私は遅い返事をお詫びします、私は離れていました。 Init関数は、dllmain()を意味しますか?そこに、私はあまりしていません :: CoInitialize(NULL); if(dwReason == DLL_PROCESS_ATTACH) { _AtlModule.Init(); :: DisableThreadLibraryCalls(hInstance); } hInstance; 戻り値_AtlModule.DllMain(dwReason、lpReserved); – A9S6