регистрация плагина IE.

Тема в разделе "WASM.WIN32", создана пользователем asmic, 18 авг 2007.

  1. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Всем доброй ночи! Возникла проблемма, никак не могу правильно зарегистрировать плагин для IE. Что только не делал, где только не смотрел. Все без толку. Может чтото я не так делаю.
    Вот мои действия:
    в ключе HKEY_CLASSES_ROOT\CLSID
    создаю {00000000-0000-0000-0000-000000000001}
    в нем InprocServer32, значение параметра ( C:\sample.dll )

    в ключе HKEY_LOCAL_MACHINE\Software\Microsoft\Internet Explorer\Extensions
    создаю {00000000-0000-0000-0000-000000000001}
    в нем CLSID значение {1FBA04EE-3024-11d2-8F1F-0000F87ABD16}
    еще ClsidExtension значение {00000000-0000-0000-0000-000000000001}

    так же пробовал прописать сюда:
    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
    создаю {00000000-0000-0000-0000-000000000001}

    но мой плагин не подгружается:dntknw:

    Да, вобще возможно ли зарегать плагин, без использования regsvr32.exe? Если да, то как? Какие ключи реестра надо создать? И что прописать? А то я уже замучался, ну никак не хочет регатся плагин. Посоветуйте как поступить. Заранее благодарен.
     
  2. temp666

    temp666 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2007
    Сообщения:
    141
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Читай о СОМ.
     
  4. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Доброй ночи. Все никак не могу решить проблемму с плагином.
    []
    При открытии страницы в IE должно появится MessageBox. Почему оно не появляется? Может быть ошибка в коде? Или я опять не так зарегистрировал плагин? Важно: чтобы регистрация была, без использования regsvr32.exe. Помогите найти ошибку ( если она есть ) и решить эту проблемму. Заранее благодарен.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    regsvr32 просто вызывает DllInstall. Можешь и сам её вызвать. А по коду - хоть бы CLSID сгенерировал нормальный (CoCreateGuid).
     
  6. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    IceStudent спасибо за совет. Проблемма в кривом CLSID:)? Да? Ведь в остальном то все правильно, я прав?
     
  7. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    IceStudent я изминил CLSID на {0x32993b06, 0xcc8c, 0x4913, 0x85, 0xf3, 0x63, 0x97, 0x7e, 0xae, 0x7e, 0x9a}. Но все равно, при открытии IE, не выскакивает MessageBox. В чем дело? почему так?
     
  8. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    asmic
    http://www.microsoft.com/rus/msdn/publish/articles/expie_hello_bho.mspx
     
  9. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Там пример с использованием ATL. А мой без ( реализация с помощью ATL меня не интересует ). Лучше подскажите что в моем BHO не так. Код верный, ключи в реестр я добавил правильно. Тогда почему не выскакивает MessageBox? Посоветуйте в чем может быть проблема. Я уже вторые сутки не могу понять ошибку. Что я сдеал не так?
     
  10. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    asmic
    А где DllRegisterServer/DllUnregisterServer? Даже если ATL не интересует, почитать статью все же стоит.
     
  11. temp666

    temp666 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2007
    Сообщения:
    141
  12. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    censored
    Эти функции он как раз сам хочет написать.
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
  14. Hmm

    Hmm New Member

    Публикаций:
    0
    Регистрация:
    22 ноя 2006
    Сообщения:
    162
    Да простит меня ТС за маленький оффтоп .

    А вот если плагин будет связываться зачем нибудь с удаленным сервером . Тогда его фаер пропустит ? При условии , что ie уже в
    списке доверенных процесcов фаера ?
     
  15. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Всем доброго дня! У меня такой вопрос. У меня не вызывается DllGetClassObject. Хотя мой плагин подгружается вместе с IE ( ключи в реестре указаны правильно ). В чем может быть проблемма?
    Да, чтобы определить вызывается ли DllGetClassObject, я использовал MessageBox ( так как другого способа отладки я не придумал, т.к. в IDE нет отладчика ).
    Код:
    Код (Text):
    1. STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppvOut)
    2. {
    3.   MessageBox(0,"DllGetClassObject",0,MB_OK);
    4.   HRESULT hr;
    5.   MyClassFactory  *pCF;
    6.   pCF = 0;
    7.  
    8.   if (rclsid != CLSID_BHO)
    9.     return (E_FAIL );
    10.  
    11.   pCF = new MyClassFactory;
    12.  
    13.   if ( pCF == 0 )
    14.     return( E_OUTOFMEMORY );
    15.  
    16.   hr = pCF->QueryInterface ( riid,ppvOut );
    17.   if ( FAILED( hr ) )
    18.   {
    19.     delete pCF;
    20.     pCF = 0;
    21.     return CLASS_E_CLASSNOTAVAILABLE;
    22.   }
    23.   return hr;
    24. }
    25.  
    26. STDAPI DllCanUnloadNow(void)
    27. {
    28.   return (gref>0)?S_FALSE:S_OK;
    29. }
    30.  
    31. BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    32. {
    33.   MessageBox(0,"DllMain",0,MB_OK);
    34.   if (fdwReason==DLL_PROCESS_ATTACH)
    35.   {
    36.     hInstance=hinstDLL;
    37.   }
    38.   return TRUE;
    39. }
    Вот сел в лужу, и не могу понять почему не вызывается DllGetClassObject. В чем может быть проблемма? Посоветуйте. Заранее благодарен.
     
  16. temp666

    temp666 New Member

    Публикаций:
    0
    Регистрация:
    13 июл 2007
    Сообщения:
    141
  17. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    А с чего Вы это взяли?
     
  18. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Я понял что мой плагин ( библиотека ), подгружается исходя из того что выскакивает MessageBox при открытии IE.
    Код (Text):
    1. BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
    2. {
    3.   MessageBox(0,"DllMain",0,MB_OK); // вот этот MessageBox
    4.   if (fdwReason==DLL_PROCESS_ATTACH)
    5.   {
    6.     hInstance=hinstDLL;
    7.   }
    8.   return TRUE;
    9. }
    И еще потому что мою библиотеку нельзя удалить пока я не закрою IE. Да я вот только понять не могу почему не вызывается DllGetClassObject.
     
  19. asmic

    asmic New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2007
    Сообщения:
    85
    Обьясните пожалуйста в чем моя ошибка. Что я делаю не так. А то я уже совсем запутался, вроде бы все верно. А все равно не работает. Заранее благодарен. Да, как можно отлаживать COM, без использования VS C++. Есть способы?
     
  20. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Отладчиком. Или пиши логи. MessageBox'ы для отладки — это извращение.