Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Создание экземпляра класса внешней dll

5.1K
16 июня 2007 года
freestyler
102 / / 23.02.2007
Суть: есть dll от AcrobatReader(AcroRd32.dll). Я хочу её использовать в своём приложении. Делаю следующее:
1) С помощью TlbImp.exe делаю из этой dll другую (Acro_Rd_32.dll)
2)В проекте делаю "Add Reference..." и добавляю её(Acro_Rd_32.dll)
3) Затем пытаюсь написать
 
Код:
AcroAppClass app = new AcroAppClass();
//где AcroAppClass - класс из библиотеки Acro_Rd_32.dll

И выдаётся ошибка:
 
Код:
Retrieving the COM class factory for component with CLSID {85DE1C45-2C66-101B-B02E-04021C009402} failed due to the following error: 80040154.

Я прочитал, о том ,что она возникает когда класс не зарегестрирован, а как регистрировать не написано.
Но вот ещё, что интересно если взять другой класс из этой же dll
и создать его экземпляр, то всё нормально создаётся:
 
Код:
AcroAXDocClass app = new AcroAXDocClass();

Скажите
а) Почему для одних классов работает, а для других нет
б) Как сделать, чтобы работало для всех классов
23K
17 июля 2007 года
Ламерко
34 / / 03.07.2007
Точно не увверен на данный случай.
Но просто есть классы у которых закрыт конструктор.
Тоесть через new myClass() доступ закрыт.
На Шарпе это выглядит примерно так
class myClass
{
protected myClass() { ... }
}
В таком случае надо найти компонент Функция(или параметр) которого возвращает нужний тип класса.
Я у себя подключил Acrobat.dll
Там есть класс про который ты говориш.
Так же есть интерфейс AcroApp
Можно создать свой класс котороый работает с интерфейсом акробата.
Но у меня
Acrobat.AcroAppClass myAcro = new Acrobat.AcroAppClass();
myAcro.Show();
Работает.
Открывает прогу акробата.

Но я добовлял в референсы без проги TlbImp.exe
И Acrobat 7.0.9
5.1K
17 июля 2007 года
freestyler
102 / / 23.02.2007
Нет. Конструкторы все открыты. Иначе бы они не высвечивались. Дело не в этом. А класс, для открытия приложения написать проще простого, но он мне не нужен. Что от него толку, если в нём нельзя обратиться к другим классам.
67K
10 января 2011 года
aldis
1 / / 10.01.2011
Терминальный вариант - работать с Excel напрямую через COM интерфейсы.

АПД. Кстати Excel данные отображает коректно, но вот в ячейке они записаны с апострофом, по видимому, этим символизируется их принадлежность к строковому типу.
__________________
7
10 января 2011 года
@pixo $oft
3.4K / / 20.09.2006
Может,под регистрацией понимается RegSvr?А ещё интересно,как вы с помощью TLBImp делаете новую DLL
63K
09 марта 2011 года
2k9software
26 / / 09.03.2011
Цитата: @pixo $oft
Может,под регистрацией понимается RegSvr?А ещё интересно,как вы с помощью TLBImp делаете новую DLL



aldis, Tlbimp.exe - этопрограмма экспорта библиотек типов. На MSDN есть подробное описание и параметры запуска.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог