私はこのチュートリアルに基づいてBHOを作成しました:http: //www.codeproject.com/KB/cs/Attach_BHO_with_C_.aspx
私GetSite
とSetSite
はチュートリアルリストと同じです。OnDocumentComplete
ハンドラーを追加/削除し、 SetSite関数SHDocVW.WebBrowser webBrowser
内で割り当てていますIObjectWithSite
デバッグの目的で、基本的な機能を除くすべてを削除しました。これが私のOnDocumentComplete
ハンドラーです。
public void OnDocumentComplete(object pDisp, ref object URL)
{
if (true)
{
HTMLDocument document;
document = (HTMLDocument)webBrowser.Document;
/*need to do some stuff here to the doc*/
//then free up script references somehow?
}
return;
}
VS2008デバッガーをIEインスタンスに接続すると、それぞれのウィンドウ/タブが閉じられた後、ロードされたすべての.jsがスタックしていることに気付きます。OnDocumentCompleteの条件をfalseに設定すると(またはBHOを無効にすると)、リークはなくなります。mshtml.HTMLDocumentで実行する必要のあるクリーンアップは他にもありますか?ありがとう!