سؤال

لقد تم تكليفك بالذهاب إلى قاعدة بيانات وتحقق من جميع الروابط، في جدول أسبوعي. عادة ما أعمل في PHP، لكن القيام بذلك في PHP سيكون بطيئا للغاية (فهذا في الواقع هو مهلة الصفحة بعد حوالي 100 URL)، لذلك قررت إنشاء تطبيق سريع C ++.

Admitidly، لم أستخدم 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. لا يتطلع إلى معرفة ما إذا كان المتصفح يحصل على 404 أم لا، فهذا ببساطة يرى أنه مفتوح وتشغيله على ما يرام.

هل هناك طريقة أفضل للقيام بذلك؟ هل أفتقد خطوة؟

جانبا، لقد حاولت استخدام الاشياء CurlcPP، ولكن لا يبدو أن معرفة ذلك. تتم الإشارة إلى جميع الأمثلة على ملفات الرأس التي لا توجد في التنزيل. لدي شعور curlcpp هو أفضل طريقة للقيام بذلك.

شكرا على اي مساعدة.

هل كانت مفيدة؟

المحلول

أعتقد أنك أجبت على السؤال الخاص بك. shellolexecute غير مناسب حقا لهذه المهمة، وشيء مثل حليقة سيكون أفضل.

نصائح أخرى

أو إذا كنت لا ترغب في استخدام مكتبة خارجية يمكنك التحقق مباشرة مع InternetOpen، InternetOpenurl وما إلى ذلك

الوثائق حول قيمة العودة من shellolexecute:

إذا نجحت الوظيفة، فإنها ترجع قيمة أكبر من 32. إذا فشلت الوظيفة، فإنها ترجع قيمة خطأ تشير إلى سبب الفشل. يتم وضع قيمة الإرجاع كعناية للتوافق مع تطبيقات Windows ذات 16 بت. انها ليست هينستانس حقيقي. يمكن أن يلقي فقط إلى int ومقارنة مع أي 32 أو رموز الخطأ التالية أدناه.

يرى shellexecute. توثيق.

ونعم، حليقة سيكون أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top