Я пытаюсь сделать то, что они объясняют в этой статье в разделе Controlling Download and Execution
. Я понимаю, что Web Browser Control
в этом контексте не является WebBrowser
из .NET.
Я пытаюсь получить контроль над тем, что загружает элемент управления WebBrowser
. Я много искал это и всегда попадал в csEXWB
, который имеет огромный код, который я просто не могу расшифровать.
Что я сделал до сих пор, так это унаследовал . NET WebBrowser
, сделал мой унаследованный класс com видимым с помощью атрибута [ComVisible(true)]
, добавил этот метод в мой класс (взятый из csEXWB):
[DispId(HTMLDispIDs.DISPID_AMBIENT_DLCONTROL)]
public int Idispatch_AmbiantDlControl_Invoke_Handler()
{
return (int)m_DLCtlFlags;
}
А затем вызовите эту строку кода, где Browser
является экземпляром моего производного класса:
IfacesEnumsStructsClasses.IOleControl oleControl = Browser.ActiveXInstance as IfacesEnumsStructsClasses.IOleControl;
oleControl.OnAmbientPropertyChange(IfacesEnumsStructsClasses.HTMLDispIDs.DISPID_AMBIENT_DLCONTROL);
Итак, я надеюсь, что oleControl
вызовет мой Idispatch_AmbiantDlControl_Invoke_Handler
метод, но он этого не делает. Я не знаю, как, и это, вероятно, то, чего не хватает в моем коде, oleControl
должен знать, на каком объекте вызывать мой Idispatch_AmbiantDlControl_Invoke_Handler
метод.
В статье, на которую я ссылался выше, говорится, что он вызовет ваш IDispatch::Invoke
. Что означает ваш
. Как мне сказать oleControl
, какой объект является моим IDispatch
. Надеюсь, я понятно объясняю.