c++调用windows API方法非常方便,只要在文件的开头,包含了相应的头文件就可以直接调用了。
下面给一个简单的例子:#include "stdafx.h" // 这是VC自动添加的文件,没有什么用途#include <windows.h> // 包含MessageBox函数声明的头文件int main(int argc, char* argv[]){// 调用API函数MessageBoxint nSelect = ::MessageBox(NULL, "Hello, Windows XP", "Greetings", MB_OKCANCEL);if(nSelect == IDOK)printf(" 用户选择了“确定”按钮 ");elseprintf(" 用户选择了“取消”按钮 ");return 0;}调用API具体步骤:
1.包含调用函数的头文件;
2.连接指定的库文件;
3.API函数前加::符号,表示全局函数.
4.在MSDN中可以找到相关API的用法。
下面给出一个调用天气api的例子,展示如何用C语言调用API接口:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h> //需要安装libcurl库
int main(void)
{
CURL *curl;
CURLcode res;
char url[100] = "http://www.weather.com.cn/data/sk/101010100.html"; //天气API接口
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, url);
/* 禁止SSL校验,否则会导致CURLE_SSL_CACERT状态码 */
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0);
/* 参照前面提到的header */
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
res = curl_easy_perform(curl);
if(res != CURLE_OK) {
fprintf(stderr, "curl_easy_perform() failed: %s ",
curl_easy_strerror(res));
}
else {
char* data = NULL;
long code = 0;
curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &code); //获取返回的HTTP状态码
curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &code); //获取返回数据的字节长度
printf("HTTP状态码:%ld 返回数据的字节长度:%ld ", code, code);
curl_easy_getinfo(curl, CURLINFO_CONTENT_TYPE, &data);
printf("Content-Type:%s ", data);
curl_easy_getinfo(curl, CURLINFO_TOTAL_TIME, &code); //获取传输耗时
printf("传输耗时:%ld秒 ", code);
curl_easy_cleanup(curl);
}
}
return 0;
}
```
输出示例:
```
HTTP状态码:200
返回数据的字节长度:28
Content-Type:application/json;charset=utf-8
传输耗时:1秒
```
以上代码使用了libcurl库,通过Curl_easy_setopt()函数设置请求相关的选项,通过CURLINFO_常量获取请求返回的信息。注意设置请求的URL、User-Agent及禁止SSL校验,否则可能会导致请求失败或返回非预期结果。同时需要注意所使用的API接口是否需要授权或鉴权,如需授权或鉴权,需要在HTTP请求头中添加相应的授权或鉴权信息,以通过API认证。