有无办法获得WebBrowser中Document中HTML表单的输入值?(100分)

  • 主题发起人 主题发起人 benqq
  • 开始时间 开始时间
B

benqq

Unregistered / Unconfirmed
GUEST, unregistred user!
HTML如下:
<head>
<title>Untitled Document</title>
</head>
<body bgcolor="#FFFFFF">
<form action="https//202.103.134.63/cc.asp" method="post" name="page1" id="PAGE1">
<input type="hidden" name=TXCODE value="100101">
user: <input type="text" name="userid" value="">
pass: <input type="password" name="password" value="">
<input type="submit" name="Submit" value="Submit">
</form>
</body>
</html>
---------------------------------------------
怎样在程序中获得用户在表单中输入的用户名,密码值?此网页地址在WebBrowser.navigate('htmlAdd')中;
 
str_password = request.getParameter("password");
str_useid= request.getParameter("useid");
 
to snjat:
我的意思是怎样才能从DELPHI程序中用WEBBROWSER的属性或方法来获取用户在WEBBROWSER
中表单上输入的值,而不是写ASP或JSP。
 
Delphi中有TWebRequest对象,这个对象将HTTP返回的信息进行分析,
非常容易使用。对于CONTENT中的数据,TWebRequest使用ContentFields,
将数据分析成为一个TStrings,可以直接使用Request.ContentFields.Values['name']
来都取数据。而URL中的数据,TWebRequest使用QueryFields,
也将数据分析成为了一个TStrings,
可以直接使用Request.QueryFields.Values['name']来读取数据。

 
好的,老兄,我试一下先!
 
为何不能成功,跟踪走到request.contentfields.values['userid']就报错:
Access violation.....
 
我在BeforeNavigate2事件中获取POSTDATA的参数值,是乱码。
用SNJAT的方法会报错(我的程序不是WEB SERVER程序,是不是此方法只能用在此类的程序中,我不知道)
最后我的解决方法:
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;
 
该结束了。
 
接受答案了.
 
后退
顶部