0

我的任务是每周检查一次数据库并检查所有链接。我通常在 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 是更好的方法。

谢谢你的帮助。

4

3 回答 3

3

我想你回答了你自己的问题。ShellExecute 真的不适合这个任务,像 CURL 这样的会更好。

于 2009-07-15T12:58:01.727 回答
3

或者如果您不想使用外部库,您可以直接使用 InternetOpen、InternetOpenURL 等进行检查。

于 2009-07-15T13:25:54.263 回答
0

ShellExecute 返回值的文档:

如果函数成功,则返回大于 32 的值。如果函数失败,则返回指示失败原因的错误值。为了向后兼容 16 位 Windows 应用程序,返回值被转换为 HINSTANCE。然而,这不是一个真正的 HINSTANCE。它只能转换为 int 并与 32 或以下错误代码进行比较。

请参阅ShellExecute文档。

是的,CURL 会更好。

于 2009-07-15T13:00:58.640 回答