1

リリース モードでビルドするシェル拡張機能があり、デバッグ シンボルと .pdb ファイルも生成します。コンテキスト メニュー拡張機能の .dll ファイルをビルドする Visual Studio プログラムを、実行中の explorer.exe プロセスにアタッチします。プログラムがアタッチされている間、次のようなエクスプローラー プロセス イベントを出力ウィンドウで確認できます。

'explorer.exe': Unloaded 'C:\Windows\System32\mydocs.dll'
'explorer.exe': Unloaded 'C:\Windows\System32\sendmail.dll'
'explorer.exe': Unloaded 'C:\Windows\System32\zipfldr.dll'
The thread 'Win32 Thread' (0x16d8) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1650) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1070) has exited with code 0 (0x0).

しかし、関数 Initialize (IshellExtInit クラスを継承して実装するクラスから) に設定したブレークポイントには到達しません。ファイルを右クリックすると、右クリック メニューがカスタム コンテキスト メニューで初期化され、目的のアクションが実行されますが、ブレークポイントにヒットすることはありません!! ごみ箱のコンテキスト メニューを登録しようとしても機能しないため、デバッグ方法を知りたいです。コードで何が起こっているかを確認したいです。ごみ箱に登録するためのコードは、この投稿で見つけることができます: ごみ箱の登録

4

1 に答える 1

2

regsvr32 を使用して手動でデバッグ ビルドを登録してみてください。

regsvr32 mydocs.dll

レジストリの変更を認識させるには、エクスプローラーを強制終了する必要がある場合があります。

それでもうまくいかない場合は、拡張機能にメッセージ ボックスを表示して、拡張機能をデバッグするのに十分な時間 Explorer が停止するかどうかを確認してください。

于 2012-08-28T19:39:08.843 に答える