窗体欲根据网页上收到的消息(如用户按了网页上的按钮),进行某些操作,再反馈给网页。请问能否实现。

解决方案 »

  1.   

    "欲在Delphi窗体中嵌入一Http网页",可在窗体上放一个TWebBrowser控件。procedure TForm1.Button1Click(Sender: TObject);
    begin
      WebBrowser1.Navigate('http://www.csdn.net');
    end;"该网页可能与窗体相互通信吗?" 你自己打算進行怎様的通信?
      

  2.   

    {******************************************************}
    {在Delphi中调用Asp文件,最重要的是asp中所有的属性,都必须}
    {要指明,然后用or进行判断}
    {******************************************************}
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Edit1: TEdit;
        Button1: TButton;
        Button2: TButton;
        WebBrowser1: TWebBrowser;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
     begin
      WebBrowser1.Navigate('http://192.168.0.5/movie/vod.asp?query1=');
     end;procedure TForm1.Button2Click(Sender: TObject);
    var
       ovElements: OleVariant;
       i:Integer;
     begin
      ovElements := WebBrowser1.OleObject.Document.Forms.Item(0).Elements;
      For I := 0 To (ovElements.Length - 1) do
       If (ovElements.item(i).tagName = 'input') or (ovElements.item(i).tagName = 'input') or
          (ovElements.item(i).type = 'text') or (ovElements.item(i).type = 'submit') or
          (ovElements.item(i).name = 'search_text') or (ovElements.item(i).name = 'submit8') or
          (ovElements.item(i).value = '<%=query1%>') or (ovElements.item(i).value = '传递') then
    //    showmessage('成功')
    //      Form1.WebBrowser1.Navigate('http://192.168.0.5/movie/vod.asp?query1=' + Form1.Edit1.Text);
          ovElements.item(i).click
     end;end.
      

  3.   

    TZoWebBrowser = class(TWebBrowser, IDocHostUIHandler)
      private
        FOnGetExternal: TGetExternalEvent;
        { Private declarations }
      protected
    ...
        function GetExternal( out ppDispatch: IDispatch ): HRESULT; stdcall;
    ...
      end;function TZoWebBrowser.GetExternal(out ppDispatch: IDispatch): HResult;
    begin
      if Assigned(FOnGetExternal) then
        Result := FOnGetExternal(ppDispatch)
      else
        Result := S_FALSE;
    end;initialization
      OleInitialize(nil);finalization
      try
        OleUninitialize;
      except
      end;
      

  4.   

    unit Unit2;{$WARN SYMBOL_PLATFORM OFF}interfaceuses
      Windows, ComObj, ActiveX, Project1_TLB, StdVcl;type
      TMyExternal = class(TAutoObject, IMyExternal)
      protected
        procedure ShowAboutBox; safecall;
        procedure SwitchUI; safecall;
      end;implementationuses ComServ, Unit1;procedure TMyExternal.ShowAboutBox;
    begin
      MessageBox(MainForm.Handle, 'GetExternal Demo', 'ZoCWebBrower', MB_OK or MB_ICONASTERISK);
    end;procedure TMyExternal.SwitchUI;
    begin
      if FBCurPage <> 2 then
      begin
        MainForm.ZoWebBrowser.Navigate('D:\project\UIHtml\STYLE2.HTML');
        FBCurPage := 2;
      end
      else
      begin
        MainForm.ZoWebBrowser.Navigate('D:\project\UIHtml\STYLE1.HTML');
        FBCurPage := 1;
      end;
    end;initialization
      TAutoObjectFactory.Create(ComServer, TMyExternal, Class_MyExternal,
        ciInternal, tmApartment);
    end.
      

  5.   

    function TMainForm.ZoWebBrowserGetExternal(
      out ppDispatch: IDispatch): HRESULT;
    var
      MyExternal: TMyExternal;
    begin
      MyExternal := TMyExternal.Create;
      ppDispatch := MyExternal;
      Result := S_OK;
    end;
      

  6.   

    <BUTTON onclick="window.external.ShowAboutBox()" type="button"> 關於 </BUTTON>
    <BUTTON onclick="window.external.SwitchUI()" type="button"> 切換界面 </BUTTON>
    以上代碼有點亂,自己整理吧!