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+接口方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: struts2的文件上传机制
- 下一篇: ie 9 渐变背景色兼容问题