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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

vc++获取网页源码之使用import+接口方式

發布時間:2024/6/21 c/c++ 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vc++获取网页源码之使用import+接口方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.使用IWinHttpRequest獲取網頁源碼

首先要創建基于對話框的mfc應用程序

?

2.import+接口方式

首先導入winhttp.dll,使用IWinHttpRequest接口

#import "C:\\Windows\\System32\\winhttp.dll"void CHttpTestDlg::OnBnClickedButton1() {::CoInitialize(NULL); // 初始化com組件IWinHttpRequest *pHttpReq = NULL;}

?編譯會出現如下錯誤:

在項目的Debug目錄下,生成兩個文件:winhttp.tlh和winhttp.tli

查看winhttp.tlh

解決方法:

1)使用命名空間WinHttp

,

2)在導入動態庫的時候不要引入命名空間

代碼:

#import "C:\\Windows\\System32\\winhttp.dll" no_namespace// IID for IWinHttpRequest const IID IID_IWinHttpRequest = {0x06f29373,0x5c5a,0x4b54,{ 0xb0, 0x25, 0x6e, 0xf1, 0xbf, 0x8a, 0xbf, 0x0e } };void CHttpTestDlg::OnBnClickedButton1() {HRESULT hr = NULL;hr = CoInitialize(NULL);IWinHttpRequest *pHttpReq = NULL;CLSID clsid;hr = CLSIDFromProgID(_T("WinHttp.WinHttpRequest.5.1"), &clsid);IID iid = __uuidof(IWinHttpRequest); CLSID tclsid = __uuidof(WinHttpRequest);hr = CoCreateInstance(clsid, NULL, CLSCTX_INPROC_SERVER, IID_IWinHttpRequest, (LPVOID*)&pHttpReq);//hr = CoCreateInstance(__uuidof(WinHttpRequest), NULL, CLSCTX_INPROC_SERVER, __uuidof(IWinHttpRequest), (LPVOID*)&pHttpReq);if (FAILED(hr)){CoUninitialize();return;}hr = pHttpReq->Open(_T("GET"), _T("http://www.baidu.com")); //缺省值為vtMissingif (FAILED(hr)){pHttpReq->Release();CoUninitialize();return;}hr = pHttpReq->Send(); // 缺省值為vtMissingif (FAILED(hr)){pHttpReq->Release();CoUninitialize();return;}CString respStr = pHttpReq->ResponseText;MessageBox(respStr); pHttpReq->Release();CoUninitialize(); }

備注:

1、只要是已經注冊了的組件就可以在注冊表中查到其GUID,比如我現在查詢下IWinHttpRequest接口的IID,用RegWorkshop這個工具就能快速搜索到。

2、這么多的ID確實不好記,簡便方法就是使用__uuidof()

__uuidof 關鍵字用來獲得表達式的GUID。這個表達式可以是一種類型名稱、一個指針、引用或者一個類型的數組、一個有這個類型實例化的模板或者這種類型的變量。

只要編譯器能使用該參數獲得相關的GUID,那么該參數就是有效的。這個參數的特殊情況就是它取0或NULL的時候。在這種情況下,__uuidof會返回一個由0組成的GUID

?

OLE/COM軟件的使用:

下載OleViewer(我使用的是v10.0)

右擊oleview.exe,以管理員身份運行

選擇菜單"File"->"View typelib" , 打開對應的文件

?

?

?

使用RegWorkshop獲取已注冊com組件的GUID:

以IWinHttpRequest,打開RegWorkShop,搜索IWinHttpRequest

?打開對應的注冊表:

?

調試結果:

?

轉載于:https://www.cnblogs.com/hupeng1234/p/6886587.html

總結

以上是生活随笔為你收集整理的vc++获取网页源码之使用import+接口方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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