"欲在Delphi窗体中嵌入一Http网页",可在窗体上放一个TWebBrowser控件。procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://www.csdn.net'); end;"该网页可能与窗体相互通信吗?" 你自己打算進行怎様的通信?
{******************************************************} {在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.
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;
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.
function TMainForm.ZoWebBrowserGetExternal( out ppDispatch: IDispatch): HRESULT; var MyExternal: TMyExternal; begin MyExternal := TMyExternal.Create; ppDispatch := MyExternal; Result := S_OK; end;
begin
WebBrowser1.Navigate('http://www.csdn.net');
end;"该网页可能与窗体相互通信吗?" 你自己打算進行怎様的通信?
{在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.
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;
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.
out ppDispatch: IDispatch): HRESULT;
var
MyExternal: TMyExternal;
begin
MyExternal := TMyExternal.Create;
ppDispatch := MyExternal;
Result := S_OK;
end;
<BUTTON onclick="window.external.SwitchUI()" type="button"> 切換界面 </BUTTON>
以上代碼有點亂,自己整理吧!