学习《C/C++ Windows 程序设计》的第二天
编译环境:Windows10 64位,VS2019
学习目的:掌握URLDownloadToFile、ShellExecuteEx 两个API函数的使用方法
步骤一:
启动VS2019 -> 创建“空项目”-> 项目名:“API函数应用”
项目属性调整(第一天回顾)
项目 -> 属性 -> 高级 -> 字符集“多字节”
->连接器 -> 系统 ->“窗口(/SUBSYSTEM:WINDOWS)”
步骤二:
解决方案资源管理器 -> 源文件 -> 添加C++文件 -> 名称"API应用"
步骤三:
代码输入,代码如下
#include <Windows.h>
#pragma comment (lib,"Urlmon.lib")
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPTSTR lpCmdLine,INT nCmdShow)
{
//下载资源地址
LPCTSTR szURL = "https://s.cctry.com/images/eagle2.png";
//保存文件地址及文件名
LPCTSTR szFileName = "D:\\123.png";
HRESULT bRet = URLDownloadToFile(NULL,szURL,szFileName,0,NULL);
if (bRet == S_OK)
{
MessageBox(NULL, "文件下载成功,即将运行程序!", "提示", MB_OK);
//定义SHELLEXECUTEINFO结构体变量,初始化为空
SHELLEXECUTEINFO ShellInfo = { 0 };
//数据大小
ShellInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShellInfo.lpVerb = "open";
ShellInfo.lpFile = szFileName;
ShellInfo.nShow = SW_SHOW;
//& 代表去ShellInfo地址
BOOL bRet1 = ShellExecuteEx(&ShellInfo);
if (bRet1 == FALSE)
{
MessageBox(NULL, "文件运行失败", "提示", MB_OK);
}
}
else
{
MessageBox(NULL, "文件下载失败", "提示", MB_OK);
}
return 0;
}
编写代码及调试过程有如下错误:
1、调用ShellExecuteEx时直接传参数,未取参数地址传递;
解决方案:在变量名前加取地址符号 “&”
2、生成过程中提示“URLDownloadToFile”未识别
原因:未包含相关头文件
解决方案:包含相关文件
#pragma comment (lib,"Urlmon.lib")
提问: 1、此处为什么 #include “Urlmon.h”不可以使用?
2、#include 与 #pragma comment 的区别?
有哪位大佬愿意帮忙解惑,不胜感激。
2021年11月17日 |