BHOs المدارة لم يتم إنشاء مثيل لها باستخدام الوضع المحمي

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

سؤال

أنا أكتب BHO لـ IE باستخدام C#. الرمز الذي أشعر به هو:

public class BHO : IObjectWithSite, IOleCommandTarget
{
    ...
    public BHO()
    {
        MessageBox.Show("Constructor called");
    }

    public int SetSite(object site)
    {
        MessageBox.Show("SetSite called!");
        if( site != null )
        {
            _webBrowser = (WebBrowser) site;
            _webBrowser.NavigateComplete2 += OnNavigateComplete2;
        }
        else
        {
            _webBrowser.NavigateComplete2 -= OnNavigateComplete2;
            _webBrowser = null;
        }
        return 0;
    }

    private void OnNavigateComplete2(object pDisp, ref object URL)
    {
        MessageBox.Show("OnNavigateComplete2 called");
    }

عندما يتم تشغيل IE مع وضع الوضع المحمي ، كل شيء يعمل بشكل جيد. ومع ذلك ، إذا تم تشغيل الوضع المحمي ، يتم استدعاء NavigateCompleted2 () ، ولكن setSite () ولا يسمى المنشئ (!؟!). ومع ذلك ، إذا قمت بإنشاء عنصر قائمة يتصل بأسلوب في فئة BHO ، أو فتح علامة تبويب جديدة ، فسيتم استدعاء كل شيء بشكل صحيح. هل يعرف أي شخص لماذا لا يعمل عندما أفتح نافذة IE جديدة؟

يمكن العثور على قائمة المصدر بالكامل هنا.

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

المحلول

أجاب شخص ما على MSDN على سؤالي: كان لا يزال يتم استدعاء المُنشئ والطريقة ، ولكن لسبب ما لا تظهر مربعات الرسائل عندما أفتح نافذة جديدة في الوضع المحمي حتى يتم تحميل الصفحة. لم يتم تعيين المتغيرات بسبب مشكلة مختلفة - كان المُنشئ إنشاء كائن فشل بصمت.

أنا الآن بحاجة إلى مساعدة مع مختلفة (يرتبط كثيرا) مشكلة.

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