我放了一个TWebBrowser,里面载入了一个id为btn的input按钮
怎样响应它被点击的事件?

解决方案 »

  1.   

    用NMUDP1控件的DataReceived事件就可以啦~
      

  2.   

    那是在网页里做的
    <script LANGUAGE=javascript>
    function btnclick()
    {
     //事件代码
    }--!>
    <input name='btn' onclick=btnclick ...>
      

  3.   

    给你一个例子
    <html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <title>New Page 1</title>
    <script language='javascript'>
    function confirmsubmit(){
    return alert("在此输入提示信息");}
    </script>
    </head><body><form method="POST" action="--WEBBOT-SELF--">
    <input type="button" value="按钮" name="B3" onclick=confirmsubmit() >
    </form></body></html>
      

  4.   

    先问:是用DELPHI编的ACTIVE控件在WEB中用吗?用按钮触发该控件的事件?
      

  5.   

    根据事件偏移量调用相应的方法或者激发事件
    实现IDispatch接口的Invoke方法function TJKCEventSink.Invoke(DispID: Integer; const IID: TGUID;
      LocaleID: Integer; Flags: Word; var Params; VarResult, ExcepInfo,
      ArgErr: Pointer): HRESULT;begin
      case DispID of      //根据事件偏移量调用相应的方法或者激发事件
        -600:onclick(FOwner.event);
        -2147418104:onmouseover(FOwner.event);
        1023:oncontextmenu(FOwner.event);
        -606:onmousemove(FOwner.event);
        -601:if Assigned(OnDbClick) then OnDbClick(FOwner.event); //激发事件
      end;
      Result := S_OK;
    end;
      

  6.   

    这么复杂啊?我看不懂?下面这样可不可以啊?
      o := WebBrowser1.OleObject.document.all.item('btn',0);
      o.onClick=我程序里面的一个函数名
      

  7.   

    我现在手上没有Delphi测试,那位帮我验证一下可以的话一样给分,谢谢!
      

  8.   

    不行,必须要有一个事件代理TEventSink。够详细了吧
    TEventSink= class(TInterfacedObject,IUnknown, IDispatch)
    procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);
    var
      doc:IHTMLDocument2;
      ele:IHTMLMarqueeElement;
      eee:IHTMLElement;
      event:HTMLButtonElementEvents;
      CPC: IConnectionPointContainer;
      CP,pp: IConnectionPoint;
      Connection:LongInt;
      Enum: IEnumConnectionPoints;
    begin
      //ii.onclick(nil);
      Connection:=-600;
      if(WebBrowser1.Document<>nil) then
      begin
        WebBrowser1.Document.QueryInterface(IID_IHTMLDocument2,doc);
        if(doc<>nil) then
        begin
          if(doc.all.item('bbb',0)<>nil) then
          begin
            doc.all.item('bbb',0).QueryInterface(IID_IHTMLElement,eee);
            myEvent:=TJKCEventSink.Create(doc.parentWindow,doc.body);
            myEvent1:=TJKCEventSink.Create(doc.parentWindow,eee);
            doc.all.item('iii',0).QueryInterface(IID_IHTMLElement,eee);
            myEvent2:=TJKCEventSink.Create(doc.parentWindow,eee);
            doc.all.item('hhh',0).QueryInterface(IID_IHTMLElement,eee);
            myEvent3:=TJKCEventSink.Create(doc.parentWindow,eee);
            myEvent.OnDbClick:=OnElementDbClick;
            myEvent1.OnDbClick:=OnElementDbClick;
            myEvent2.OnDbClick:=OnElementDbClick;
            myEvent3.OnDbClick:=OnElementDbClick;
          end;
        end;
      end;
    end;
      

  9.   

    如果你的这个button是submit的话可以在webbroswer的submit事件中捕获这个消息,如果不是的话....公司机子上什么资料都没有,回家在我的爱机上给你找找,我记得有办法地
      

  10.   

    谢谢!
    IConnectionPointContainer
    这个类型在哪个包里面啊?麻烦了!