我的任务是按周计划浏览数据库并检查所有链接。我通常在PHP中工作,但在PHP中执行此操作会非常慢(实际上会在大约100个URL之后超时页面),所以我决定制作一个快速的C ++应用程序。
不可否认,我从大学开始就没有使用过C ++,所以我有点生气。
我找到了ShellExecute函数,并且它会打开页面没问题。以下是我到目前为止的情况:
#include <shlobj.h>
#include <iostream>
using namespace std;
int main()
{
if( ShellExecute(NULL,"find","http://example.com/fdafdafda.php",NULL,NULL,SW_SHOWDEFAULT) )
{
cout << "Yes";
} else {
cout << "No";
}
cout << endl;
system("PAUSE");
return 0;
}
问题是它总是返回true,无论是否打开有效页面。它似乎是检查关联的应用程序(在这种情况下是一个浏览器)是否能够没有问题地打开文档,然后返回true。它不是要查看浏览器是否获得404,它只是看到它打开并运行并且没问题。
有更好的方法吗?我错过了一步吗?
顺便说一下,我试图使用cURLcpp的东西,但似乎无法弄明白。所有示例都指向下载中不存在的头文件。我有一种感觉cURLcpp是更好的方法。
感谢您的帮助。
答案 0 :(得分:3)
我想你回答了自己的问题。 ShellExecute实际上不适合这个任务,像CURL这样的东西会更好。
答案 1 :(得分:3)
或者如果您不想使用外部库,可以直接使用InternetOpen,InternetOpenURL等进行检查。
答案 2 :(得分:0)
有关ShellExecute返回值的文档:
如果函数成功,则返回大于32的值。如果函数失败,则返回指示失败原因的错误值。返回值被强制转换为HINSTANCE,以向后兼容16位Windows应用程序。然而,它不是真正的HINSTANCE。它只能转换为int并与下面的32或以下错误代码进行比较。
请参阅ShellExecute文档。
是的,CURL会更好。