線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1465
推到 Plurk!
推到 Facebook!

請問如何擷取網頁上圖檔的路徑?

尚未結案
760729
一般會員


發表:32
回覆:51
積分:16
註冊:2004-09-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-01 09:51:33 IP:203.64.xxx.xxx 未訂閱
以下程式可以取得網頁上所有的鏈結, 但無法取得網頁上其它的物件, 如圖片的路徑或 POP-UP MENU 的 URL, 我查看了 MSDN 仍然無解, 不知各位高手, 可否幫忙解答, 謝謝.    void CGetLinksDlg::OnBnClickedGetlinks() {         TCHAR HostName[2*MAX_PATH];         CComPtr spDispatch; CComQIPtr pDoc2; CComPtr pElementCol; CComPtr pLoct; // TODO: Add your control notification handler code here int n = m_LinksList.GetItemCount();//GetCount(); for (int i = 0; i < n; i ){ IWebBrowser2 *pBrowser = (IWebBrowser2 *)m_LinksList.GetItemData(i); if (pBrowser){ pBrowser->Release(); } } m_LinksList.DeleteAllItems(); m_LinksNum = 0; Log("**************************************************************"); Log("\r\n"); if (m_spSHWinds){ int n = m_spSHWinds->GetCount(); for (int i = 0; i < n; i ){ _variant_t v = (long)i; IDispatchPtr spDisp = m_spSHWinds->Item(v); SHDocVw::IWebBrowser2Ptr spBrowser(spDisp); if (spBrowser){ if (SUCCEEDED(spBrowser->get_Document( &spDispatch))) pDoc2 = spDispatch; if(pDoc2!=NULL) { if (SUCCEEDED(pDoc2->get_links (&pElementCol))) { long p=0; if(SUCCEEDED(pElementCol->get_length(&p))) if(p!=0) { m_LinksNum = m_LinksNum p; UpdateData(FALSE); for(long i=0;i<=(p-1);i ) { CComBSTR String; _variant_t index = i; if(SUCCEEDED(pElementCol->item( index, index, &spDispatch))) if(SUCCEEDED(spDispatch->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct))) pLoct->get_href(&String); ZeroMemory(HostName,2*MAX_PATH); lstrcpy(HostName,_bstr_t(String)); m_LinksList.InsertItem(i,HostName); m_LinksList.SetCheck(i,TRUE); pLoct->get_hostname(&String); ZeroMemory(HostName,2*MAX_PATH); lstrcpy(HostName,_bstr_t(String)); if(lstrlen(HostName)) { m_LinksList.SetItemText(i,1,HostName); Log(HostName ); Log("\r\n"); } } } } } } } } }
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-01 12:58:47 IP:202.145.xxx.xxx 未訂閱
760729 您好 一、張貼程式請使用縮排[ code] [ /code],以利閱讀 二、相同文章請勿跨區重覆發表    
void CGetLinksDlg::OnBnClickedGetlinks()
{
        TCHAR HostName[2*MAX_PATH];
        CComPtr spDispatch;
        CComQIPtr pDoc2;
        CComPtr pElementCol;
        CComPtr pLoct;
        // TODO: Add your control notification handler code here
        int n = m_LinksList.GetItemCount();//GetCount();            for (int i = 0; i < n; i ++){
                IWebBrowser2 *pBrowser = (IWebBrowser2 *)m_LinksList.GetItemData(i);
                if (pBrowser){
                        pBrowser->Release();
                }
        }            m_LinksList.DeleteAllItems();
        m_LinksNum = 0;
        Log("**************************************************************");
        Log("\r\n");            if (m_spSHWinds){
                int n = m_spSHWinds->GetCount();
                for (int i = 0; i < n; i++){
                    _variant_t v = (long)i;
                    IDispatchPtr spDisp = m_spSHWinds->Item(v);                    SHDocVw::IWebBrowser2Ptr spBrowser(spDisp);    
                        if (spBrowser){                            if (SUCCEEDED(spBrowser->get_Document(  
                                &spDispatch)))
                                pDoc2 = spDispatch;
                                if(pDoc2!=NULL)
                                {
                                if (SUCCEEDED(pDoc2->get_links
                                        (&pElementCol)))
                                        {
                                                                                                long p=0;
                                        if(SUCCEEDED(pElementCol->get_length(&p)))
                                                if(p!=0)
                                                        {   
                                                                m_LinksNum = m_LinksNum+p;
                                                                UpdateData(FALSE);                                                                    for(long i=0;i<=(p-1);i++)
                                                                {                                                                            CComBSTR String;
                                                                        _variant_t index = i;
                                                                        if(SUCCEEDED(pElementCol->item( index, index, &spDispatch)))
                                                                        if(SUCCEEDED(spDispatch->QueryInterface( IID_IHTMLAnchorElement,(void **) &pLoct)))                                                                            pLoct->get_href(&String);                                                                            ZeroMemory(HostName,2*MAX_PATH);
                                                                        lstrcpy(HostName,_bstr_t(String)); 
                                                                        m_LinksList.InsertItem(i,HostName);
                                                                        m_LinksList.SetCheck(i,TRUE);
                                   
                pLoct->get_hostname(&String);
                  ZeroMemory(HostName,2*MAX_PATH);
                                                                        lstrcpy(HostName,_bstr_t(String)); 
                                                                        if(lstrlen(HostName))
                                                                        {
                                                                                m_LinksList.SetItemText(i,1,HostName);
                                                                                Log(HostName );
                                                                                Log("\r\n");
                                                                        }
                                                                }
                                                        }
                                        }                                    }                            }
                }
        }
}    
760729
一般會員


發表:32
回覆:51
積分:16
註冊:2004-09-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-01 13:22:00 IP:203.64.xxx.xxx 未訂閱
副站長您好: 因為本人的疏忽, 造成大家的不便, 深感抱歉.
pgdennis
資深會員


發表:41
回覆:526
積分:443
註冊:2002-05-23

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-01 13:25:12 IP:218.163.xxx.xxx 未訂閱
剛在delphi區看到,提供delphi寫法,希望你能看的懂 跟你原本找到的取得連結的程式碼很像
implementation
uses MSHTML;
{$R *.dfm}    procedure TForm1.Button1Click(Sender: TObject);
var
 Doc: IHTMLDocument2;
 i:integer;
 IMGs:IHTMLELEMENTCollection;
 img:IHTMLImgElement;
begin     //取得目前正在瀏覽的網頁的document}
 Doc := WB1.Document as IHTMLDocument2;//wb1是webbroswer
 IMGs:=doc.images as IHTMLELEMENTCollection;
 //doc包含 imaes,links等物件集合.....
 for i:=0  to IMGs.length-1 do begin
     img:=(IMGs.item(i,i) as IHTMLImgElement);
     ListView1.AddItem(img.href,nil);
 end;    end;
星期一,星期二...星期日..星期一..無窮迴圈@@
------
星期一,二...無窮迴圈@@
ddy
站務副站長


發表:262
回覆:2105
積分:1169
註冊:2002-07-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-01 13:35:47 IP:202.145.xxx.xxx 未訂閱
引言: 因為本人的疏忽, 造成大家的不便, 深感抱歉.
別介意,一同來維持ktop文章品質 < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=8147403&CC=182217">
760729
一般會員


發表:32
回覆:51
積分:16
註冊:2004-09-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-04 08:23:51 IP:203.64.xxx.xxx 未訂閱
謝謝, 我試試看.
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-18 17:33:37 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-05 3:05:07
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!