![]() |
|
Модераторы: MetalFan |
![]()
|
|
| ___Felix___ |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 15.1.2007 Репутация: нет Всего: нет |
Всем доброго времени суток ;-)
У меня проблема: при вставке в DLL компонента TWebBrowser выдается ошибка "Не был произведен вызов CoInitialize". Может я че не так делаю, но мои действия были таковы: 1) В Delphi 7 выбрал меню File - New - Other и DLL Wisard 2) File - New - Form 3) Cо вкладки Internet перетащил на форму объект WebBrowser 4) В коде формы объявил
5) В блоке implementation написал следующее
6) В файле проекта дописал
7) Откомпилировал проект 8) Открыл VS2003 и создал Win32 Console Application для Visual C/C++ 9) В папку с проектом скопировал DLL, полученную на шаге 7 10) Вот листинг сишной программы:
И после такого вот выскакивает сначала "Hello, DLL (begin)", а затем "Исключение неизвестное программное исключение (0x0eedfade) в приложении по адресу 0x7c81eb33." =( Попробовал удалить WebBrowser - все нормально. Пробовал в dll-ке делать так:
тогда выдавались сообщения "Hello, DLL (begin)", "Hello, DLL (Dialog was created)", а потом "Hello, DLL (end) failed = Не был произведен вызов CoInitialize" Люди, помогите с этим траблом. Всю программу ведь обламывает, а исправить можно - только не знаю как =( |
||||||||||
|
|||||||||||
| hhhhhhhhhhhh |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Нашлось решение?
Я вот делаю плагин для Оперы. Тоже в dll используется TWebBrowser, лежащий на форме. Нормально работает, но при выгрузке плагина тоже постоянно вылетает ошибка(AV). Если заменить TWebBrowser ЛЮБЫМ(!) контролом из VCL - все работает БЕЗ ошибок. Явно трабл в TWebBrowser, а где конкретно, не могу понять. Есть какие нибудь мысли хотябы, что может быть? Проверил вообще по простому: TForm1 = class(TPluginForm) ... protected WB: TWebBrowser; end; procedure TForm1.FormCreate(Sender: TObject); begin WB := TWebBrowser.Create(nil); end; procedure TForm1.FormDestroy(Sender: TObject); begin WB.Free; // после этого вылетает ошибка(AV) end; И даже так вылетает AV. Че за херня не могу понять. Это сообщение отредактировал(а) hhhhhhhhhhhh - 24.11.2008, 17:19 |
|||
|
||||
| Viy_2007 |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 80 Регистрация: 27.11.2007 Репутация: нет Всего: нет |
а вызывать CoInitialize не пробовали?
|
|||
|
||||
| hhhhhhhhhhhh |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 24.7.2008 Репутация: нет Всего: нет |
Мда... "Тормозок, ты меня называла" Спасибо! Точно! С меня варенье! Добавил в конец модуля с формой:
Заработала!!! пс. Раз уж Делфи сама автоматичести следить за освобождение строк(тип String) и интерфейсов(IInterface и потомков), сдесь бы тоже автоматика не помешала Чайники всякие бывают Это сообщение отредактировал(а) hhhhhhhhhhhh - 3.12.2008, 15:09 |
||||
|
|||||
| Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 2 Всего: 329 |
Поднимаю тему, т.к. у меня схожая проблема.
Есть поток (Thead), в нём только одна процедура Execute, где создаётся сам компонент браузера. Вот такой код
вот вызов
в модуле потока есть вызов:
D2007, Win7 Добавлено через 9 минут и 46 секунд По совету уважаемого Alexeis`а переместил CoInitialize(nil) и установил непосредственно перед вызовом строки создания браузера. Ошибка исчезла. |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: ActiveX/СОМ/CORBA" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |