如何得到网页上一个特定字符串的位置(50分)

  • 主题发起人 主题发起人 wangzheking
  • 开始时间 开始时间
W

wangzheking

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾,在下有理了。小弟我最佳想编写一个应用程序,可以在网页打开的状态下找到
网页中某一特定字符串的位置,比如打开大富翁Delphibbs网站,如何得到字符串
“问题分类”的位置,在下谢谢先
 
你看一下这个帖子,是jsxjd大虾帮我解决的:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1404412
我做了一个IE Toolbar,完全可以实现你的要求,源码:http://www.playicq.com/dispdoc.php?t=27&id=2016
 
首先我对Delphi+Internet编程不是很了解,我打算实现的目的是没有可视的窗体,
程序在背后执行,在网页上找到相应字符并把鼠标移动到这个字符的位置上。
不知道是否你提供的代码是否可以,谢谢
 
“没有可视的窗体”,你的网页在哪儿?要查找的字符是从哪儿输入的?
 
以下是在 TWebBrowser 控件中实现的,原理一样!!!

uses .......,mshtml;


procedure TForm1.Button1Click(Sender: TObject);
var
sString,s:string;
doc:IHTMLdocument2;
R:IHTMLTxtRange;
v:variant;
begin
sString :='问题分类';
try
doc :=IHTMLdocument2(webbrowser1.Document) ;
R :=IHTMLTxtRange(doc.selection.createRange);
R.findText(sString,1,0);
R.select;
v:=r;
s:=format('Left:%d Top:%d Width:%d Height:%d',
[integer(v.boundingLeft),integer(v.boundingTop),integer(v.boundingWidth),integer(v.boundingHeight)]);
showmessage(s);
except
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
webbrowser1.navigate('http://www.delphibbs.com/delphibbs/dispq.asp?lid=1445738');
end;
 
zw84611,我打算做的程序在背後執行,當我使用ie打開網頁時啟動這個程序,這個程序會
找尋一個特定字符串並移動鼠標點擊。
jsxjd,你的方法Showmessage出來的就是上述我講述的位置嗎?
一定要使用webbrowser嗎?
 
jsxjd大蝦,為什麼要用v:=r;直接用r不成嗎?
 
你试过我的程序吗?你把我的程序稍改一下就完全可以作到。
 
和接口有关系,用 r 无法取得 boundingLeft 这些属性。
 
两位大虾,有没有全面介绍webbrowser的资料吗?我用webbrowser编写了一个浏览器,
但是有些网站登录后就会打开另一个网页,是用IE打开的,请问怎么让这个网页在
webbrowser中,因为我要找的字符在这个网页中,并不在登录网页中,谢谢
 
void (2000-7-2 11:59:43)
响应WebBrowser的OnNewWindow2事件
赋值ppDisp:=NewWebBrowser.DefaultDispatch;
^^^^^^^^^^^^^
这是个新的WebBrowser


 
按照你的方法我在OnNewWindow2事件中添加了代码,其中我的NewWebBrowser是在事件中
创建的对象,
代码如下:
procedure TfrmSearchString.wbInternetNewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
var
NewWebBrowser:TWebBrowser;
begin
NewWebBrowser:=TWebBrowser.Create(self);
ppDisp:=NewWebBrowser.DefaultDispatch;
NewWebBrowser.Visible:=true;
NewWebBrowser.Show;
end;
但是不知道为什么没有网页打开
 
你没有指定Parent,当然显示不出来。
NewWebBrowser:=TWebBrowser.Create(self);
frmSearchString.InsertControl(NewWebBrowser);
NewWebBrowser.Visible:=true;
 
谢谢两位大虾,我已经能够成功的打开这个网页了,
小弟从两位身上学到这么多经验真是太谢谢了,行动代表一切,给两位加分
我想给两位都加上50分,不知道应该怎么做
 
两位能留下email吗?小弟有问题可以直接请教
 
多人接受答案了。
 
后退
顶部