日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

TWebBrowser的基本应用

發(fā)布時間:2024/8/22 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TWebBrowser的基本应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

偶然的機會需要使用TWebBrowser,在開發(fā)過程中涉及到一些比較不膚淺的東西,于是免不了搜資料,翻CSDN的帖子,終于把要做的東西作了出來,同時對于 TWebBrowser也有了初步的了解。同時看到很多CSDN上的不少朋友也在TWebBrowser上存在很多疑問,于是把自己這段時間所得的拿出來與大家分享。還是那句話,本人水平很洼,說的不對的話敬請指出,不要客氣,否則不但我自己學錯了東西,也讓看這篇文章的人誤入歧途。廢話少說正文開始。

首先我們要認識到TWebBrowser其實是Delphi對Internet Explorer Browser的封裝,也就是說它是一個ActiveX控件,看過TWebBrowser代碼的朋友會發(fā)現這個空間的所有方法的實現部分都調用了 DefaultInterface的方法,而TWebBrowser的這個屬性是一個IWebBrowser2接口類型的對象,這個接口就是IE的接口。我們在使用TWebBrowser代替IE瀏覽器的目的大部分是為了能夠讓程序處理頁面,實現自動對WebApplication的請求,所以我們首先想得到的就是TWebBrowser所瀏覽的內容。TWebBrowser的Documnet屬性正是這一內容,Document其實是一個 IHTMLDocument2,但是它被聲明為IDispatch接口類型,我們需要把它轉化為IHTMLDocument2類型然后是用我們需要的各種方法。在這里需要注意IHTMLDocument2是在MSHTML單元定義的,需要我們手動將這一單元加入到uses部分。具體代碼如下:

var D : IHTMLDocument2;
begin
D :
= WebBrowser1.Document as IHTMLDocument2;
end;

接下來我們來看看一個網頁中包含什么,也就是我們希望通過TWebBrowser來處理的內容有哪些。網頁中的元素主要有普通文本內容,超級連接以及動態(tài)的元素(Form中的元素),當然還有其它元素,但是我們在一般的處理過程中一般會用到這些,因此我在這里以這些元素為例首先我要介紹的是Form 和包含在Form中的元素的使用。

在IHTMLDocument接口中有一個Forms的屬性,這個屬性是IHTMLElementCollection接口類型,其實這個 Forms屬性是TWebBrowser顯示的頁面中的所有Form元素。也就是說一個頁面中的所有Form都包含在Forms這個集合中。我們可以以使用IHTMLDocument.Forms.item(name: OleVariant; index: OleVariant)得到我們需要操作的Form,當然我們在這里得到的只是一個IDispatch接口,我們需要再把這個接口轉換成 IHTMLFormElement來使用Form的方法和屬性。示例如下(該例子為yahoo的免費信箱登陸界面http://mail.yahoo.com.cn):

var Form : IHTMLFormElement ;
D:IHTMLDocument2 ;

begin
with WebBrowser1 do begin
D :
= Document as IHTMLDocument2;
Form :
= D.Forms.item('login_form',0) as IHTMLFormElement;
(form.item(
'login',0) as IHTMLElement).setAttribute('value',edit1.Text,0);
(form.item(
'passwd',0) as IHTMLElement).setAttribute('value',edit2.Text,0);
//form.submit; // this line work too
(form.item(
'.save',0) as IHTMLElement).click;
end;
end;

從上面的例子我們可以看到我們可以通過兩種方法提交一個Form,這兩種方法在一般情況下沒有什么區(qū)別,但是當頁面中編寫了一些js用來實現頁面提交的控制時,前者會忽略掉這些js,所以后面的方法是我所推薦的。

在這個時候我遇到了一個問題,就是在我要處理的頁面中有兩個Form,而且這樣兩個Form都沒有名字,也就是說Form := D.Forms.item('login_form',0) as IHTMLFormElement;這一句中item的第一個參數的我們無法從網頁中得到,同時在設置這個參數時我發(fā)現了一個問題,就是說如果在頁面中有兩個Form元素的話,第一個Form元素可以通過item(varEmpty,0)得到,第二個Form元素可以通過item(verNull,0)得到,而item的第二個參數完全不起作用,這個問題可能是由于我對該函數的錯誤使用造成的,希望有人可以給出這一問題的解決方案(我在自己翻看帖子是找到了答案,的確是我對該函數的參數的錯誤使用造成的,第一個參數應該是我們要使用的對象的索引值。)。我的想法是DHTML在沒有明確得到一個元素的名稱時會自動生成一個唯一的元素名稱分配給該元素,但是如何得到這個唯一的元素名稱呢?這個只是我的一個設想,我們會看到,當我們處理鏈接的時候我們還要遇到這個問題。示例如下(這是我自己做的一個jsp程序):

var form : IHTMLFormElement ;
d:IHTMLDocument2 ;
begin
with WebBrowser1 do begin
d :
= document as IHTMLDocument2;
form :
= d.forms.item(varNull,01) as IHTMLFormElement;
(form.item(
'firstName',0) as IHTMLElement).setAttribute('value',edit1.Text,0);
(form.item(
'lastName',0) as IHTMLElement).setAttribute('value',edit1.Text,0);
form.submit;
end;
end;

以上是網頁中Form的基本處理,接下來我介紹一下網頁中對于鏈接的控制,我們一般是希望能夠實現程序自動點擊網頁中的連接。在這里正如前面提到的,我只能得到前兩個沒有名稱的連接。示例如下:

var Links : IHTMLElementCollection;
D:IHTMLDocument2 ;
Element : IHTMLElement;
begin
with WebBrowser1 do begin
D :
= Document as IHTMLDocument2;
Links :
= D.links;
Element :
= (Links.Item(varempty,0) as IHTMLElement);
ShowMessage(Element.getAttribute(
'href',0));
Element :
= (Links.Item(varNull,0) as IHTMLElement);
ShowMessage(Element.getAttribute(
'href',0));
end;
end;

我們可以通過調用以上代碼中的Element.Click事件來模擬點擊。不行了,寫不下去了,還有一個常見的問題就是怎么使自己寫的Browser在打開一個新窗口時在制定窗口打開。這個要在TWebBrowser的NewWindows2中改變 ppDisp來實現。

轉載于:https://www.cnblogs.com/dwbboy/archive/2011/02/22/1960282.html

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的TWebBrowser的基本应用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 午夜视频在线观看视频 | 国产在线看一区 | 国产黄色一区 | 午夜激情视频在线观看 | 国产精选网站 | 天天插夜夜爽 | 国产精品久久久久久久久久久久久久 | 四虎影视最新网址 | 日本午夜精品理论片a级app发布 | xxx在线播放 | 曰本黄色大片 | 日本一区二区三区久久久久 | av在线影片 | 最新激情网站 | 久操视频免费在线观看 | 午夜88| 天堂av2018| 国产美女诱惑 | 免费又黄又爽又猛大片午夜 | 亚洲成人福利视频 | 婷婷色一区二区三区 | 亚洲国产网址 | 国产真实夫妇交换视频 | 亚洲午夜伦理 | 亚洲AV无码成人精品区明星换面 | 成人黄色短视频在线观看 | 看全色黄大色黄女片18 | 亚洲爆爽av| 色六月婷婷| 老湿福利影院 | 精品国产免费人成在线观看 | 国产一区二区三区麻豆 | 琪琪久久 | xxx毛片 | 一级特级毛片 | 色老板精品凹凸在线视频观看 | aaaaa级片| 毛片毛片毛片毛片毛片毛片毛片毛片毛片 | 日本性网站 | 天堂在线观看中文字幕 | 日日操天天射 | 男插女视频免费 | 亚洲超碰在线 | 日本三级视频在线观看 | 一区视频在线播放 | 国产精品久久久久久亚洲色 | 午夜爽爽爽 | 国产小视频一区 | 国产区在线看 | 男女视频久久 | 亚洲国产视频一区二区 | 国产农村妇女精品 | 国产喷水福利在线视频 | 日本老妇性生活 | 在线电影一区二区三区 | 男女午夜激情 | 久久夜色精品国产噜噜亚洲av | 天天干干天天 | 亚洲欧美第一视频 | 久久亚洲少妇 | 午夜影院免费在线观看 | 成人深夜在线观看 | 日韩精品在线观看AV | 天天燥日日燥 | a久久久久久 | 日韩色图在线观看 | 日韩在线精品强乱中文字幕 | 久久免费的精品国产v∧ | 日韩欧美亚洲在线 | 丝袜老师让我了一夜网站 | 国产在线成人 | 奇米第四色首页 | 久久久久99 | 午夜国产在线视频 | 精彩视频一区二区三区 | 三级三级久久三级久久18 | 国产精品一区二区av白丝下载 | 欧美在线一区二区三区 | 青青操精品| 一本在线免费视频 | 久久精品国产清自在天天线 | 成人日韩欧美 | 天堂中文在线视频 | 中文字幕无码乱人伦 | 欧美一区二区三区四区五区 | 午夜成人影视 | 高跟鞋av | 天天草夜夜草 | av中文天堂在线 | 久久久久久久久久久久久久免费看 | 国产精品福利小视频 | 国产黄a三级三级三级看三级男男 | 懂色av一区二区三区四区 | 国产一级网站 | 摸一摸操一操 | 日本xxxx裸体xxxx出水 | 成人av男人的天堂 | 欧美一二区 | 多男调教一女折磨高潮高h 国内毛片毛片毛片毛片毛片 |