|

楼主 |
发表于 2016-4-10 20:01:45
|
显示全部楼层
附上 代码 在win7上一切OK
win10 上就是不行
#include "stdafx.h"
#import "winhttp.dll" named_guids
//winhttp对象事件实例化类
struct WinHttpRequestEventClass : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void __RPC_FAR *__RPC_FAR *ppvObject)
{
MessageBoxA(NULL, "QueryInterface", "查询接口", MB_OK);
return 0;
}
virtual ULONG STDMETHODCALLTYPE AddRef(void)
{
MessageBoxA(NULL, "Addref", "增加计数", MB_OK);
return 0;
}
virtual ULONG STDMETHODCALLTYPE Release(void)
{
MessageBoxA(NULL, "Release", "减少计数", MB_OK);
delete this;
return 0;
}
virtual void __stdcall OnResponseStart(long Status, BSTR ContentType)//开始下载事件
{
MessageBoxA(NULL, "OnResponseStart", "开始下载", MB_OK);
}
virtual void __stdcall OnResponseDataAvailable(SAFEARRAY** Data)//数据接受事件
{
printf("%lu\n", (const char*)((*Data)->rgsabound[0].cElements));//数据大小
printf("%s", (const char*)((*Data)->pvData));//数据内容
}
virtual void __stdcall OnResponseFinished()//完成事件
{
MessageBoxA(NULL, "OnResponseFinished", "完成下载", MB_OK);
}
virtual void __stdcall OnError(long ErrorNumber, BSTR ErrorDescription)//错误事件
{
MessageBoxA(NULL, "OnError", "发生错误", MB_OK);
}
};
int main(int argc, char* argv[])
{
CoInitialize(NULL);
WinHttp::IWinHttpRequestPtr WinHttpRequestPtr(WinHttp::CLSID_WinHttpRequest);
IConnectionPointContainerPtr ConnectionPointContainerPtr;
WinHttpRequestPtr->QueryInterface(IID_IConnectionPointContainer, (void**)&ConnectionPointContainerPtr);
IConnectionPointPtr ConnectionPointPtr;
ConnectionPointContainerPtr->FindConnectionPoint(WinHttp::IID_IWinHttpRequestEvents, &ConnectionPointPtr);
DWORD dwCookie;
ConnectionPointPtr->Advise((IUnknown*)new WinHttpRequestEventClass, &dwCookie);
WinHttpRequestPtr->Open("GET", "http://www.baidu.com", true);
WinHttpRequestPtr->Send();
WinHttpRequestPtr->WaitForResponse();
CoUninitialize();
return 0;
} |
|