Я занят написанием BHO (вспомогательного объекта браузера) в C#, и мне нужно привязать обработчики событий ко всем событиям onclick на элементах ввода. Я НЕ использую встроенный веб-браузер, предоставляемый visual studio, вместо этого я запускаю новый экземпляр Internet Explorer, установленный на клиентском ПК. Проблема возникает при использовании разных версий IE.Присоединить обработчик события к mshtml.DispHTMLInputElement
В IE7 и IE8 я могу сделать это так:
public void attachEventHandler(HTMLDocument doc)
{
IHTMLElementCollection els = doc.all;
foreach (IHTMLElement el in els)
{
if(el.tagName == "INPUT")
{
HTMLInputElementClass inputElement = el as HTMLInputElementClass;
if (inputElement.IHTMLInputElement_type != "text" && InputElement.IHTMLInputElement_type != "password")
{
inputElement.HTMLButtonElementEvents_Event_onclick += new HTMLButtonElementEvents_onclickEventHandler(buttonElement_HTMLButtonElementEvents_Event_onclick);
}
}
}
}
Это прекрасно работает, дело в том, IE6 выдает ошибку при забросе на HTMLInputElementClass, так что вы вынуждены бросить в DispHTMLInputElement:
public void attachEventHandler(HTMLDocument doc)
{
IHTMLElementCollection els = doc.all;
foreach (IHTMLElement el in els)
{
if(el.tagName == "INPUT")
{
DispHTMLInputElement inputElement = el as DispHTMLInputElement;
if (inputElement.type != "text" && inputElement.type != "password")
{
//attach onclick event handler here
}
}
}
}
Проблема в том, что я не могу найти способ привязать событие к объекту DispHTMLInputElement. Есть идеи?