يتم إعداد إنترنيتكسلورر ك _ _ كوموبجيكت بدلا من شدوكفو.إنترنت إكسبلورر

StackOverflow https://stackoverflow.com/questions/6019250

سؤال

أواجه مشكلة مع إنترنيتكسلورر في شدوكفو.دلل.لدي أيضا مشتمل.تلب المشار إليها (في حين غوغلينغ ، فعلت قراءة 1 التعليق الذي قال يجب أن يكون مشتمل.دل المشار إليها ، ولكن هذا لا يمكن القيام به في مايكروسوفت فيسوال ستوديو اكسبرس, ، لا أعرف مدى صحة هذا بالرغم من ذلك).وهنا وظيفة واحدة صغيرة في أبسط أشكاله التي لن تعمل بالنسبة لي:

public static HtmlElement GetDocumentControlByID(
    ref SHDocVw.InternetExplorer IEObj, 
    string ControlID)
{
    HtmlElement ReturnElement = IEObj.Document.GetElementById(ControlID);
    return ReturnElement;
}

المشكلة هي أنه عند إنشاء مثيل إيوبج ، فإنه يعتبر نوع System.__ComObject بدلا من SHDocVw.InternetExplorer, ، وجميع الأجزاء الفرعية هي أيضا من النوع System.__ComObject.عندما أحاول أي من العبارات التالية...

Document WebDoc = IEObj.Document;
HtmlElement ReturnElement = IEObj.Document.GetElementById(ControlID);

...أستمر في تلقي نفس رسالة الخطأ:

لا يمكن تحويل نظام النوع ضمنيا.__كائن ' إلى ' النظام.ويندوز.أشكال.هتمليمنت (من الواضح أن نوع التحويل إلى يختلف عن IEObj.Document).

أنا جديد على ج# (قادمة من فبا ، لذلك أنا على دراية البرمجة) ، ولكن في فبا ، إكويفيلانت يعمل تماما دون الحاجة إلى تحويله بأي شكل من الأشكال.

هل هو شيء أفعله خطأ?في حال كان إنشاء الكائن الخاص بي ، فإن ما يلي هو (تقريبا) الرمز الذي استخدمته لاختبار الوظيفة:

public static void Main(String [] args)
{
    SHDocVw.InternetExplorer IEObj = new SHDocVw.InternetExplorer();
    IEObj.Navigate("http://sports.ladbrokes.com/");
    while (IEObj.ReadyState != 4)
    {

    }

    // There is a textbox that definitely exists

    HtmlElement NetControl = GetDocumentControlByID(ref IEObj, "username");

    // I was goint to manipulate it after this, but it crashes in the above function.

}

كل ما أريد فعله حقا هو التمسك بعناصر مختلفة حتى أتمكن من إدخال نص في مربعات النص ، والنقر فوق الأزرار وما إلى ذلك.سأحتاج أيضا إلى أن أكون قادرا على استخدام متغيرات المستند أيضا (مثل وثيقة.الجسم.إنرتمل, ، الخ).المشروع بأكمله هو أن تكون مجموعة من الوظائف التي سيتم تضمينها في دل ليتم الرجوع إليها من قبل مشاريع أخرى.

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

المحلول

كنت تحاول استخدام وينفورمز HtmlElement الطبقة ، التي أليس كذلك كائن كوم.
لا يمكنك مزج الأم InternetExplorer كائن كوم مع الطبقات المدارة في وينفورمز.

يجب عليك استخدام الطبقات وينفورمز (ال WebBrowser السيطرة) بدلا من ذلك.
في معظم الحالات ، لا تحتاج إلى كوم على الإطلاق.

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