我想将文件下载到当前目录而不是“c://”。怎么做?
我的代码:
using namespace std;
#pragma comment(lib, "urlmon.lib")
int main()
{
cout << "downloading update";
HRESULT hr = URLDownloadToFile(NULL, _T("http://download.piriform.com/ccsetup233.exe"), _T("c://ccsetup233.exe"), 0, NULL);
FreeConsole();
}
答案 0 :(得分:1)
URLDownloadToFile()
的引用说明szFileName
参数(强调我的):
指向包含名称或完整路径的字符串值的指针 要为下载创建的文件。如果szFileName包含路径,则 目标目录必须已存在。
如果只传递文件名而不是完整路径,则会下载到当前目录。这没有明确记录,但它是Windows API工作的常规方式。
虽然我在调用URLDownloadToFile()
时当前目录与程序开始时的当前目录不同。任何代码都可能调用SetCurrentDirectory()
来将当前目录更改为其他目录。
为了使代码更健壮,我只在程序开始时调用GetCurrentDirectory()
一次,并将路径存储在变量中。在调用URLDownloadToFile()
之前,我会将文件名附加到该路径并传递szFileName
参数的完整路径。
在旁注中,您应该在开始时调用CoInitialize()
,在使用CoUninitialize()
的程序结束时调用URLDownloadToFile()
,因为它是COM API。没有它你可能会离开,但那将是纯粹的运气,可能会停止在不同的Windows版本中工作。