CoCreateInstance в DLL

Тема в разделе "WASM.BEGINNERS", создана пользователем Minion, 12 окт 2005.

  1. Minion

    Minion New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    1
    Есть следущий код, который исполняется в DllEntry при DLL_PROCESS_ATTACH



    .if reason==DLL_PROCESS_ATTACH

    invoke CoInitialize, 0

    invoke CoCreateInstance,offset CLSID_InternetExplorer, 0, CLSCTX_INPROC_HANDLER, addr IID_Application,addr g_sWnd



    CoCreateInstance возвращает ошибку REGDB_E_CLASSNOTREG, хотя из exe такой код замечательно работает...
     
  2. Dimson

    Dimson New Member

    Публикаций:
    0
    Регистрация:
    7 июл 2005
    Сообщения:
    59
    Адрес:
    Russia
    Может имеет смысл этот код запускать не в DllEntry, а где-нибудь ещё? Хотя-бы эксперимента ради.
     
  3. DelExe

    DelExe New Member

    Публикаций:
    0
    Регистрация:
    22 авг 2005
    Сообщения:
    165
    В умных книжках советуют вообще не вызывать функций которые не экспортируются c модулей kernel32 и user32. Попробуй вызвать CoCreateInstance после инициализации.
     
  4. protoman

    protoman New Member

    Публикаций:
    0
    Регистрация:
    12 сен 2006
    Сообщения:
    6
    таже проблема..

    CoCreateInstance не пашет в DllEntry :dntknw:
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    protoman
    В msdn же чёрным по белому написано, что в DllEntry нельзя загружать другие модули. Поэтому не пашет. Подключаться к ActiveX таким образом - вообще зверство. Надо поместить этот код в отдельную функцию, экспортировать её и спокойно вызывать из exe после успешной загрузки DLL.