链接检查器与ShellExecute?

时间:2009-07-15 12:52:21

标签: c++ winapi hyperlink shellexecute

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

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

有关ShellExecute返回值的文档:

  

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

请参阅ShellExecute文档。

是的,CURL会更好。