如何在WebBrowser控件内执行当前打开网页中包含的JAVA代码(有FRAME)(200分)

  • 主题发起人 主题发起人 tankdt
  • 开始时间 开始时间
T

tankdt

Unregistered / Unconfirmed
GUEST, unregistred user!
点其中的一个按钮,状态栏显示:javascript:parent.f10.cd();
要模拟按这个按钮。
查过前面的帖,不明白doc.scripts.item(i).fireevent(sEVENT) 怎么用fireevent是什么?
页面含有多个FRAME,该怎么做啊?(不含FRAME的我能实现了)
请提出一个明确有效的方法,先谢过了。

 
顺便问一句相关的:IHTMLWindow2是什么?怎么用?
为什么在DELPHI5里
var
s:IHTMLWindow2;
说没有定义,要包含什么?
 
IHTMLWindow2到底怎么用啊,谁能简单给个说明?
到底怎么执行JSP函数啊,如果有参数该怎么传?
FRAME下的按钮我知道怎么模拟按了。
 
可怜,我捧捧场。
IHTMLWindow2应该是ie或twebbrowser的一个接口,具体查msdn。
不管你的java在哪儿,都可以由IHTMLWindow2的getframes得到具体frame,然后
doc.scripts.item(i).fireevent(sEVENT) 。
凭印象写的:)
 
IHTMLWindow2到底怎么用呢?在DELPHI5中应该怎么定义才能用啊?
哪儿有msdn,我手上没有。
 
写程序,msdn可是必须的哦,特别是系统相关。街上D版5元/张,你也可到
msdn.microsoft.com
下载
 
怎么还是没有人告诉我该怎么用IHTMLWindow2啊
 
IHTMLWindow2是在MSHTML。pas中定义的一个接口,其中有Frames属性可以访问窗口的
帧,接口的用法在COM组件的那本书里讲的还是比较细的,你可以看看下面的用法。
procedure TForm1.WebBrowserEx1BeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
var
doc:IHTMLDocument2;
all:IHTMLElementCollection;
len,i:integer;
item:OleVariant;
HtmlInputEle : IHTMLInputElement;
HoptionBtn: IHTMLselectElement;
spDisp : IDispatch;
ss:Tstrings;
begin
if url='' then
exit;
if (Uppercase(URL) = UPPercase(ladd)) and (WebBrowserEx1.Document <> nil) then
begin
doc:=WebBrowserEx1.Document as IHTMLDocument2;
all:=doc.all;
len:=all.Length;
for i:=0 to len-1 do
begin
spDisp:=all.item(i,varEmpty);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle)) then
begin
listbox1.Items.Add(HTmlInputEle.name);
if HTMlInputEle.name = 'checkbox' then
begin
if HtmlInputEle.checked then
listBox1.Items.add(HtmlInputEle.value);
end
else
begin
if HTMlInputEle.name = 'radiobutton' then
begin
if HtmlInputEle.checked then
listbox1.items.add(HtmlInputEle.Get_value);
end
else
listBox1.Items.add(HtmlInputEle.value);
end;
end;
if SUCCEEDED(spDisp.QueryInterface(IHTMLselectElement ,HOptionBtn)) then
begin
if assigned(HoptionBtn) then listBox1.Items.add(HoptionBtn.name);
if assigned(HoptionBtn) then listBox1.items.add(HoptionBtn.Get_value);
listbox1.Items.add((HoptionBtn.options as IHTMLSelectELement).value);
end;
end;
end;
end;
 
也就是说利用Document这个IDispach接口属性来访问其中的对象。
WebBrowserEx1.Document as IHTMLDocument2;这种用法挺关键的,这样就不用另外写
程序把接口实现什么的了
 
是不是要USER MSHTML.pas
现在放假,手上没有DELPHI没办法调
等过了假期调试了再请教
这里先谢谢了。
 
肯定要啦,Delphi本身没有这个文件的,你首先要Import ActiveX
导入Microsoft Internet Control
 
lofa 的程序是做什么的啊,运行怎么老是读地址错误啊?
是把什么东西加到listBox1里啊?那么多的IF好象都不成立啊。
IHTMLDocument2 是在MSHTML.pas里定义的,只要USES MSHTML好象就行了
好象不需要如sisha所说要Import ActiveX,D5好象就有了,不用装。

不过,我要运行javascript中的代码该怎么写啊。
是不是用doc.scripts.item(i).fireevent(sEVENT)
fireevent怎么定义啊?sEVENT填什么?i是什么?


 
后退
顶部