저는 C#을 사용하여 IE 용 BHO를 작성하고 있습니다. 내가 염려하는 코드는 다음과 같습니다.관리되는 BHO가 보호 모드를 사용하여 인스턴스화되지 않음
public class BHO : IObjectWithSite, IOleCommandTarget
{
...
public BHO()
{
MessageBox.Show("Constructor called");
}
public int SetSite(object site)
{
MessageBox.Show("SetSite called!");
if(site != null)
{
_webBrowser = (WebBrowser) site;
_webBrowser.NavigateComplete2 += OnNavigateComplete2;
}
else
{
_webBrowser.NavigateComplete2 -= OnNavigateComplete2;
_webBrowser = null;
}
return 0;
}
private void OnNavigateComplete2(object pDisp, ref object URL)
{
MessageBox.Show("OnNavigateComplete2 called");
}
IE가 보호 모드를 해제 한 상태로 실행하면 모든 것이 정상적으로 작동합니다. 그러나 보호 모드가 켜져 있으면 NavigateCompleted2()가 호출되지만 SetSite() 및 생성자는 호출되지 않습니다 (!?!). 그러나 BHO 클래스에서 메서드를 호출하는 메뉴 항목을 만들거나 새 탭을 열면 모든 항목이 올바르게 호출됩니다. 새 IE 창을 열 때 왜 작동하지 않는지 아는 사람 있습니까?
전체 소스 목록은 here입니다.