回复人: ehom(?!) ( star1 ) 信誉:100 2002-11-26 14:51:11 得分:50 Top
对于控制IE当然使用现成的COM接口更加灵活! 利用IObjectWithSite接口的SetSite方法中获得IE的WebBrowser接口并建立自身与WebBrowser的连接,本质就是建立一个COM对象,注册让其它和IE运行在同一进程!通过这个方法,就可以得到一个指向IE COM对象的IUnknown的指针,通过这个指针就可以通过QueryInterface来遍历所有可以得到的接口,然后通过IWebBrowser2借口的get_Document方法网页接口IHTMLDocument2!而通过IHTMLElement,IHTMLInputElement,IHTMLButtonElement,IHTMLFormElement,IHTMLImgElement,IHTMLAppletElement...这样的各种接口就可以对网页中的各种元素进行控制!不过看来,你是想通过外部一个不相关的程序对IE进行控制!这里详细介绍另一种方法,利用IShellWindows接口!首先安装一个ActiveX控件-Microsoft Shell Controls and Automation(IE4以后,系统都自带了)!安装完后,给程序加上TShell控件! Uses 中加上这些单元ActiveX,MSHTML,OleCtrls,SHDocVw!var ShWin:IShellWindows; Wb:IWebBrowser2; begin ShWin:=Shell1.windows as IShellWindows; Wb:=ShWin.Item(0) as IWebBrowser2; end;这样就把第一个IE和Wb相关联!然后利用IHTMLDocument2接口!var Doc:IHTMLDocument2; Button:IHTMLElement; begin Doc:=Wb.document as IHTMLDocument2; Button:= Doc.all.item('MyButton',0) as IHTMLElement; //如果网页中该按钮的name或id都不存在,即tagName不存在,就要将'MyButton'换成相应序号数字! Button.click; //实现点击操作! end;为了防止出错,还要对是否存在对象进行判断!
提交表单可以直接用现成的方法!var Doc:IHTMLDocument2; Form:IHTMLFormElement; begin Doc:=Webbrowser1.Document as IHTMLDocument2; Form:= Doc.all.item('Login',0) as IHTMLFormElement; Form.Submit; end;var Doc:IHTMLDocument2; Button:IHTMLElement; begin Doc:=Webbrowser1.Document as IHTMLDocument2; Button:= Doc.all.item('MyButton',0) as IHTMLElement; //如果name和id不存在,即tagName不存在,就要将'MyButton'换成相应序号数字! Button.click; end;调用脚本! var Doc:IHTMLDocument2; Scripts:IHTMLScriptElement; begin Doc:=Webbrowser1.Document as IHTMLDocument2; Scripts:=Doc.scripts.item(0,0) as IHTMLScriptElement; //Scripts.text可获得脚本内容,Doc.scripts.Length长度,可用于遍历所有脚本! end;解释脚本可以用MS提供的Script Control!
对于控制IE当然使用现成的COM接口更加灵活!
利用IObjectWithSite接口的SetSite方法中获得IE的WebBrowser接口并建立自身与WebBrowser的连接,本质就是建立一个COM对象,注册让其它和IE运行在同一进程!通过这个方法,就可以得到一个指向IE COM对象的IUnknown的指针,通过这个指针就可以通过QueryInterface来遍历所有可以得到的接口,然后通过IWebBrowser2借口的get_Document方法网页接口IHTMLDocument2!而通过IHTMLElement,IHTMLInputElement,IHTMLButtonElement,IHTMLFormElement,IHTMLImgElement,IHTMLAppletElement...这样的各种接口就可以对网页中的各种元素进行控制!不过看来,你是想通过外部一个不相关的程序对IE进行控制!这里详细介绍另一种方法,利用IShellWindows接口!首先安装一个ActiveX控件-Microsoft Shell Controls and Automation(IE4以后,系统都自带了)!安装完后,给程序加上TShell控件!
Uses 中加上这些单元ActiveX,MSHTML,OleCtrls,SHDocVw!var
ShWin:IShellWindows;
Wb:IWebBrowser2;
begin
ShWin:=Shell1.windows as IShellWindows;
Wb:=ShWin.Item(0) as IWebBrowser2;
end;这样就把第一个IE和Wb相关联!然后利用IHTMLDocument2接口!var
Doc:IHTMLDocument2;
Button:IHTMLElement;
begin
Doc:=Wb.document as IHTMLDocument2;
Button:= Doc.all.item('MyButton',0) as IHTMLElement;
//如果网页中该按钮的name或id都不存在,即tagName不存在,就要将'MyButton'换成相应序号数字!
Button.click;
//实现点击操作!
end;为了防止出错,还要对是否存在对象进行判断!
Doc:IHTMLDocument2;
Form:IHTMLFormElement;
begin
Doc:=Webbrowser1.Document as IHTMLDocument2;
Form:= Doc.all.item('Login',0) as IHTMLFormElement;
Form.Submit;
end;var
Doc:IHTMLDocument2;
Button:IHTMLElement;
begin
Doc:=Webbrowser1.Document as IHTMLDocument2;
Button:= Doc.all.item('MyButton',0) as IHTMLElement;
//如果name和id不存在,即tagName不存在,就要将'MyButton'换成相应序号数字!
Button.click;
end;调用脚本!
var
Doc:IHTMLDocument2;
Scripts:IHTMLScriptElement;
begin
Doc:=Webbrowser1.Document as IHTMLDocument2;
Scripts:=Doc.scripts.item(0,0) as IHTMLScriptElement;
//Scripts.text可获得脚本内容,Doc.scripts.Length长度,可用于遍历所有脚本!
end;解释脚本可以用MS提供的Script Control!