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

cppWebBrowser如何從網頁定時抓取圖片

缺席
n63e
一般會員


發表:3
回覆:5
積分:1
註冊:2009-01-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-09 17:10:03 IP:140.134.xxx.xxx 訂閱
就是我打算執行一個網頁的按鈕
按鈕按下去之後網頁上會不斷出現圖片的更新還有一些其他的我不需要的按鈕
但是我想要定時抓取這個網頁上的圖片(該網頁會一直更新),可能設定成一秒抓個四張圖片存在電腦
在搜尋網路上的文章之後,我決定利用cppWebBrowser去做
但是在CppWebBrowser1DocumentComplete()的第一行宣告
IHTMLDocument2 *HTMLDocument = NULL;的時候就出現
undefined symbol
而且後續幾行的程式碼,總覺得getinnerText也不對,因為我是要抓圖片
請各位大大指教一下

[code cpp]
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
CppWebBrowser1->Navigate(WideString("http://xxx.xxx.xxx.xxx"));
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Variant document = CppWebBrowser1->Document;
Variant all = document.OlePropertyGet("all");
Variant hidden1 = all.OleFunction("item",
(VARIANT)Variant(WideString("btn2")),
(VARIANT)Variant(0));
hidden1.OleProcedure("click");


}
//---------------------------------------------------------------------------
void __fastcall TForm1::CppWebBrowser1DocumentComplete(TObject *Sender,
LPDISPATCH pDisp, Variant *URL)
{
IHTMLDocument2 *HTMLDocument = NULL;//出現undefined simbol的問題
if(SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,
(LPVOID*)&HTMLDocument)))
{
IHTMLElement *pElement = NULL;
HTMLDocument->get_body(&pElement);
if (pElement)
{
WideString str;
pElement->get_innerText(&str);
Memo1->Text = AnsiString(str);
pElement->Release();
}
HTMLDocument->Release();
}
}

[/code]
------
大家好,我是個初入門的BCB學習者
請多多指教喔~
n63e
一般會員


發表:3
回覆:5
積分:1
註冊:2009-01-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-12 17:35:09 IP:140.134.xxx.xxx 訂閱
自己回復自己

[code cpp]
//--------------變數--------------------
HINTERNET hInternet ;
HINTERNET hOpenUrl;
AnsiString HTTPServer, sBuffer ;
bool error
char * lpBuffer ;
DWORD lpdwNumberOfBytesRead, dwSize ;
char lpHTTPServer[200];
double static id = 1231550025500;
String sFile = "c:\\temp\\1-1.jpg";
//^^^資料夾要先自己建立好^^^^^^^
FILE *fp;
//---------------變數--------------------
//-----------------程式主體--------------------
dwSize = 2048*16;//這個ccd拍出來的照片大概需要這麼大才裝得下
lpBuffer = (char*)malloc(dwSize);
fp= fopen (sFile.c_str(), "wb ");
if (fp==NULL )
{
ShowMessage("fopen 失敗");
return;
}
HTTPServer = "http://xxx.xxx.xxx.xxx/image?res=half&x0=0%&y0=0%&x1=100%&y1=100%&quality=15&doublescan=0&ssn=1231548887343&id=" FloatToStr(id);
wsprintf((LPSTR) lpHTTPServer, "%s", HTTPServer);
//wsprintf(緩衝區,格式,要格式化的值);
//這個function可以將內容格式化輸出到第一個參數所提供的緩衝區
hInternet = InternetOpen("Application",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0) ;
if(!hInternet)
ShowMessage("InternetOpen 失敗");
hOpenUrl = InternetOpenUrl(hInternet,lpHTTPServer,NULL,0,
INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD | INTERNET_FLAG_DONT_CACHE,0) ;
if (!hOpenUrl)
{
ShowMessage("InternetOpenUrl 失敗");
return;
}
if(!InternetReadFile(hOpenUrl,(LPVOID)lpBuffer,dwSize-1,&lpdwNumberOfBytesRead))
{
ShowMessage("InternetReadFile 失敗");
return;
}
CppWebBrowser1->Navigate(WideString(HTTPServer));
//ShowMessage("lpdwNumberOfBytesRead value:" IntToStr(lpdwNumberOfBytesRead));
id ;//每次必須以不同的參數,才可以一直存取到不同的圖片
if(lpdwNumberOfBytesRead==0)
{
ShowMessage("讀取到大小為0的檔案");
return;
}
else
fwrite(lpBuffer,sizeof(char),lpdwNumberOfBytesRead,fp);
//-----------------程式主體--------------------

//-----------------------釋放資源----------------------
free(lpBuffer);
fclose(fp);
InternetCloseHandle(hOpenUrl) ;
InternetCloseHandle(hInternet) ;
//-----------------------釋放資源----------------------
[/code]
------
大家好,我是個初入門的BCB學習者
請多多指教喔~
系統時間:2024-05-20 11:38:58
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!