关于muti-frames的问题(300分)

  • 主题发起人 主题发起人 zyy04
  • 开始时间 开始时间
Z

zyy04

Unregistered / Unconfirmed
GUEST, unregistred user!
如何填写muti-frames中得表单,点击按钮,运行其中的script.
每个100,不够再加!!!
以前的答案(2000年10月前的)我都看过了,都有问题!
可以用IE,或webbrowser.
 
根据以前的答案完全可以写出这个程序,你还是把你的代码贴出来看看哪有毛病吧,
我也懒得打字了。
 
ThtmlViewer Component

Unit
HTMLView.Pas
Description
The ThtmlViewer component displays single HTML documents. Documents may be loaded from disk files, memory buffers, StringLists, or streams.
See Also:
TFrameViewer Component
TFrameBrowser Component
 
取得网页元素的接口是第一步,然后你不仅可以往里面填数据,还可以知道里
面填了什么数据。
 
// 轉貼一段
procedure TForm1.PutData;
var
ShellWindow: IShellWindows;
nCount: integer;
spDisp: IDispatch;
i,j,X: integer;
vi: OleVariant;
IE1: IWebBrowser2;
IDoc1: IHTMLDocument2;
iELC : IHTMLElementCollection ;
iform:IHTMLFormElement;
S,S2 : string;
HtmlInputEle : IHTMLInputElement;
HtmlSelEle : IHTMLSelectElement;
begin
ShellWindow := CoShellWindows.Create;
nCount := ShellWindow.Count;

for i := 0 to nCount - 1 do
begin
vi := i;
spDisp := ShellWindow.Item(vi);
if spDisp = nil then continue;
spDisp.QueryInterface( iWebBrowser2, IE1 );
if IE1 <> nil then
begin
IE1.Document.QueryInterface(IHTMLDocument2,iDoc1);
if iDoc1 <> nil then
begin

ielc:=idoc1.Get_all;

for j:=0 to ielc.length-1 do
begin
Application.ProcessMessages;
spDisp := ielc.item(J, 0);
if SUCCEEDED(spDisp.QueryInterface(IHTMLInputElement ,HtmlInputEle))then
with HtmlInputEle do
begin
//htmlinputele.name 就是取得這個 input 的 name
S2:=Type_;
S2:=UpperCase(S2);

//我把所有的input都填上 try , checkbox 都打勾
if (StrComp(PChar(S2),'TEXT')=0) or (StrComp(PChar(S2),'PASSWORD')=0) then
value :='try' //S:=S+#9+Value
else if StrComp(PChar(S2),'CHECKBOX')=0 then
begin
checked := True;
end;
end;

if SUCCEEDED(spDisp.QueryInterface(IHTMLselectelement ,HtmlSelEle))then
with HtmlSelEle, Memo1.Lines do
begin
S:=S+#9+IntToStr(selectedIndex+1); //這個是獲取數據了
//HtmlselEle.name 就獲得這個selectelement地name了
Memo2.Lines.Add(S);
exit;
end;

// 取得表單 Name
if SUCCEEDED(spDisp.QueryInterface(IHTMLFormElement ,iform))then
with iform do
begin

S2:=Name;
Submit; // Post Form
end; //END FOR


end;
end;
end;
end;


 
多人接受答案了。
 
后退
顶部