想要讓WebBrowser自動click網頁上的連結或按鈕 |
尚未結案
|
derekyppp
一般會員 發表:16 回覆:33 積分:9 註冊:2004-02-20 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
Hello derekyppp, 只要你知道網址,瀏覽就可以了.
不過,我不太清楚你所說的"自動click網頁上的連結或按鈕"是怎樣的動作?
是每格一段時間refresh一次嗎?還是....
希望我沒有誤解你的意思.
是否可再詳細描述一下呢? *改用自己的按鈕去連結一個網址
CppWebBrowser1->Navigate((WideString)"http://www.aaa.com.tw/a1/s2");*固定一段時間去重新瀏覽 void __fastcall TForm1::Timer1Timer(TObject *Sender) { CppWebBrowser1->Navigate((WideString)"http://www.aaa.com.tw/a1/s2"); }發表人 - nlj859 於 2004/08/26 21:26:24 |
derekyppp
一般會員 發表:16 回覆:33 積分:9 註冊:2004-02-20 發送簡訊給我 |
|
nlj859
資深會員 發表:139 回覆:375 積分:322 註冊:2004-03-20 發送簡訊給我 |
|
MyYunSong
一般會員 發表:10 回覆:18 積分:5 註冊:2004-08-20 發送簡訊給我 |
我最近也在研究這個問題。先給你個代碼:
這就是模擬點擊的部份,有興趣我們再互相學習一下
void __fastcall TForm1::Button3Click(TObject *Sender)
{
_di_IDispatch disp;
System::DelphiInterface
|
xfile
初階會員 發表:21 回覆:80 積分:25 註冊:2004-10-02 發送簡訊給我 |
引言: 我最近也在研究這個問題。先給你個代碼: 這就是模擬點擊的部份,有興趣我們再互相學習一下請加 code 和 /code ,難怪我會 compile 錯誤 -_-void __fastcall TForm1::Button3Click(TObject *Sender) { _di_IDispatch disp; System::DelphiInterface |
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
我也來試試
首先假設你的CppWebBrowser1已經瀏覽http://tw.yahoo.com且下載完成
以下的程式碼是找出所有的連結中文字是"網站登錄"的連結,並且按下Click
Variant disp,alllinks,eachlink; int linkcount; disp = CppWebBrowser1->Document; alllinks = disp->OlePropertyGet("links"); //取得所有的連結 linkcount = alllinks.OlePropertyGet("length"); //取得連結的數量 for (int i=0;i<linkcount;i ) { eachlink = linkall.OleFunction("item",i); //依序取得每一個連結 if (eachlink.OlePropertyGet("innerText")=="網站登錄") //判斷<a>中的文字 { eachlink.OleFunction("click"); //按下連結 break; //記得離開for迴圈 } }至於自動點選的部份可以寫在CppWebBrowser1的OnDocumentComplete事件中 自己要判斷進行到哪一個部份 可以用CppWebBrowser1->LocationURL來判斷目前的網址 也可以判斷網頁內的內容來看進行到哪一個部份。 發表人 - artist1002 於 2004/10/28 22:02:41 |
derekyppp
一般會員 發表:16 回覆:33 積分:9 註冊:2004-02-20 發送簡訊給我 |
|
derekyppp
一般會員 發表:16 回覆:33 積分:9 註冊:2004-02-20 發送簡訊給我 |
|
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
引言: artist1002大大 我剛剛又再試一次,這次已經正常可以運作了 可是我還有一個問題想問耶^^" 就是,如果我現在要點選的是網頁上的button呢 radio button 要在程式中修改哪一個部份呢?這個就是要看DHTML了 http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_document.asp 我們可以把CppWebBrowser1->Document當作是DHTML的document物件 接著就參考MSDN的文件尋訪內容,遇到Attributes/Properties就用OlePropertyGet來讀,用OlePropertySet來寫 遇到Collections也是用OlePropertyGet來取得 遇到Methods就用OleFunction來做 如果要點選的是網頁上的button,先看網頁原始碼的input button有沒有設定id或是name,有的話會比較簡單。 先假設有name為button1,以下的是按下button Variant disp,dhtmlbutton; disp = CppWebBrowser1->Document; dhtmlbutton = disp.OleFunction("getElementsByName","button1"); //取得button1按鈕 if (!dhtmlbutton->IsNull()) //如果有找到按鈕 dhtmlbutton->OleFunction("click"); //按下按鈕如果有Id的話只要改成就可以 dhtmlbutton = disp.OleFunction("getElementById","buttonId"); //取得button1按鈕最糟的狀況是沒有name也沒有Id的狀況 這個時候就需要取得所有的input的collections然後一個一個比較,看哪個是你要的 可以比較value或是其他的部份. 假設button的value是"搜尋" Variant disp,allbuttons,eachbutton; int buttoncount; disp = CppWebBrowser1->Document; allbuttons = disp.OleFunction("getElementsByTagName","input"); //取得所有tag是input的集合 buttoncount = allbuttons.OlePropertyGet("length"); //取得集合的數量 for (int i=0;i<buttoncount;i ) { eachbutton = allbuttons.OleFunction("item",i); //依序取得每一個連結 if (eachbutton.OlePropertyGet("value")=="搜尋") //判斷value的文字 { eachbutton.OleFunction("click"); //按下按鈕 break; //記得離開for迴圈 } } </pre> 另外如果只是要讓form作submit的動作 也可以找form然後下submit的Function |
artist1002
高階會員 發表:2 回覆:155 積分:151 註冊:2002-09-26 發送簡訊給我 |
引言:引言: artist1002大大 我剛剛又再試一次,這次已經正常可以運作了 可是我還有一個問題想問耶^^" 就是,如果我現在要點選的是網頁上的button呢 radio button 要在程式中修改哪一個部份呢?這個就是要看DHTML了 http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/obj_document.asp 我們可以把CppWebBrowser1->Document當作是DHTML的document物件 接著就參考MSDN的文件尋訪內容,遇到Attributes/Properties就用OlePropertyGet來讀,用OlePropertySet來寫 遇到Collections也是用OlePropertyGet來取得 遇到Methods就用OleFunction來做 如果要點選的是網頁上的button,先看網頁原始碼的input button有沒有設定id或是name,有的話會比較簡單。 先假設有name為button1,以下的是按下buttonVariant disp,dhtmlbutton; disp = CppWebBrowser1->Document; dhtmlbutton = disp.OleFunction("getElementsByName","button1"); //取得button1按鈕 if (!dhtmlbutton->IsNull()) //如果有找到按鈕 dhtmlbutton->OleFunction("click"); //按下按鈕如果有Id的話只要改成就可以dhtmlbutton = disp.OleFunction("getElementById","buttonId"); //取得button1按鈕最糟的狀況是沒有name也沒有Id的狀況 這個時候就需要取得所有的input的collections然後一個一個比較,看哪個是你要的 可以比較value或是其他的部份. 假設button的value是"搜尋"Variant disp,allbuttons,eachbutton; int buttoncount; disp = CppWebBrowser1->Document; allbuttons = disp.OleFunction("getElementsByTagName","input"); //取得所有tag是input的集合 buttoncount = allbuttons.OlePropertyGet("length"); //取得集合的數量 for (int i=0;i<buttoncount;i ) { eachbutton = allbuttons.OleFunction("item",i); //依序取得每一個input if (eachbutton.OlePropertyGet("value")=="搜尋") //判斷value的文字 { eachbutton.OleFunction("click"); //按下按鈕 break; //記得離開for迴圈 } } </pre> 另外如果只是要讓form作submit的動作 也可以找form然後下submit的Function |
baryan
一般會員 發表:0 回覆:3 積分:0 註冊:2004-12-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |