يتم إعداد إنترنيتكسلورر ك _ _ كوموبجيكت بدلا من شدوكفو.إنترنت إكسبلورر
-
14-11-2019 - |
سؤال
أواجه مشكلة مع إنترنيتكسلورر في شدوكفو.دلل.لدي أيضا مشتمل.تلب المشار إليها (في حين غوغلينغ ، فعلت قراءة 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
السيطرة) بدلا من ذلك.
في معظم الحالات ، لا تحتاج إلى كوم على الإطلاق.