懂mshtml事件的同志看过来

plato 2001-07-10 10:06:09
俺用VJ生成了HTMLInputTextElementEvents2的wrapper类,
然后用InputTextHandler2实现了HTMLInputTextElementEvents2,
然后得到IHTMLInputTextElement,
然后FindConnectionPoint,
然后Advise,
然后收不到任何消息。

Why?
源码如下:

class InputTextHandler2 implements HTMLInputTextElementEvents2
{
public boolean onhelp(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onclick(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean ondblclick(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onkeypress(mshtml.IHTMLEventObj pEvtObj){return false;}
public void onkeydown(mshtml.IHTMLEventObj pEvtObj){}
public void onkeyup(mshtml.IHTMLEventObj pEvtObj){}
public void onmouseout(mshtml.IHTMLEventObj pEvtObj){}
public void onmouseover(mshtml.IHTMLEventObj pEvtObj){}
public void onmousemove(mshtml.IHTMLEventObj pEvtObj){}
public void onmousedown(mshtml.IHTMLEventObj pEvtObj){}
public void onmouseup(mshtml.IHTMLEventObj pEvtObj){}
public boolean onselectstart(mshtml.IHTMLEventObj pEvtObj){return false;}
public void onfilterchange(mshtml.IHTMLEventObj pEvtObj){}
public boolean ondragstart(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onbeforeupdate(mshtml.IHTMLEventObj pEvtObj){return false;}
public void onafterupdate(mshtml.IHTMLEventObj pEvtObj){}
public boolean onerrorupdate(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onrowexit(mshtml.IHTMLEventObj pEvtObj){return false;}
public void onrowenter(mshtml.IHTMLEventObj pEvtObj){}
public void ondatasetchanged(mshtml.IHTMLEventObj pEvtObj){}
public void ondataavailable(mshtml.IHTMLEventObj pEvtObj){}
public void ondatasetcomplete(mshtml.IHTMLEventObj pEvtObj){}
public void onlosecapture(mshtml.IHTMLEventObj pEvtObj){}
public void onpropertychange(mshtml.IHTMLEventObj pEvtObj){}
public void onscroll(mshtml.IHTMLEventObj pEvtObj){}
public void onfocus(mshtml.IHTMLEventObj pEvtObj){}
public void onblur(mshtml.IHTMLEventObj pEvtObj){}
public void onresize(mshtml.IHTMLEventObj pEvtObj){}
public boolean ondrag(mshtml.IHTMLEventObj pEvtObj){return false;}
public void ondragend(mshtml.IHTMLEventObj pEvtObj){}
public boolean ondragenter(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean ondragover(mshtml.IHTMLEventObj pEvtObj){return false;}
public void ondragleave(mshtml.IHTMLEventObj pEvtObj){}
public boolean ondrop(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onbeforecut(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean oncut(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onbeforecopy(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean oncopy(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onbeforepaste(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean onpaste(mshtml.IHTMLEventObj pEvtObj){return false;}
public boolean oncontextmenu(mshtml.IHTMLEventObj pEvtObj){return false;}
public void onrowsdelete(mshtml.IHTMLEventObj pEvtObj){}
public void onrowsinserted(mshtml.IHTMLEventObj pEvtObj){}
public void oncellchange(mshtml.IHTMLEventObj pEvtObj){}
public void onreadystatechange(mshtml.IHTMLEventObj pEvtObj){}
public boolean onchange(mshtml.IHTMLEventObj pEvtObj){
MessageBox.show(pEvtObj.getSrcElement().getOuterHTML());
return false;
}
public void onselect(mshtml.IHTMLEventObj pEvtObj){}
public void onload(mshtml.IHTMLEventObj pEvtObj){}
public void onerror(mshtml.IHTMLEventObj pEvtObj){}
public void onabort(mshtml.IHTMLEventObj pEvtObj){}
}

java.util.Vector cookie;
InputTextHandler2 h;

private void menuItem4_click(Object source, Event e)
{
cookie=new java.util.Vector();
IHTMLDocument2 doc = (IHTMLDocument2)((shdocvw.IWebBrowser2)(webBrowser.getOcx())).getDocument();
IHTMLElementCollection cols = (IHTMLElementCollection)(doc.getAll().tags(new Variant("INPUT")));

h = new InputTextHandler2();

for (int i=0; i<cols.getLength(); i++)
{
IHTMLInputTextElement ele;
Object o = cols.item( new com.ms.com.Variant(i),new com.ms.com.Variant(i) );
if (o instanceof IHTMLInputTextElement)
{
ele = (IHTMLInputTextElement)o;
IConnectionPointContainer connectionContainer = (IConnectionPointContainer)ele ;
IConnectionPoint cp = connectionContainer.FindConnectionPoint(HTMLInputTextElementEvents2.iid) ;
if (cp!=null)
{
int coo = cp.Advise(h);
cookie.addElement( new Integer(coo)) ;
//com.ms.com.ComLib.release(cp) ;
}
}
}
}
...全文
127 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
plato 2001-07-10
  • 打赏
  • 举报
回复
随便给点提示吧,谁用过HTMLInputTextElementEvents2?
plato 2001-07-10
  • 打赏
  • 举报
回复
补充一下,已经找到了IHTMLInputTextElement,Advise也似乎成功。

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧