AcroAppClass app = new AcroAppClass();
//где AcroAppClass - класс из библиотеки Acro_Rd_32.dll
Создание экземпляра класса внешней dll
1) С помощью TlbImp.exe делаю из этой dll другую (Acro_Rd_32.dll)
2)В проекте делаю "Add Reference..." и добавляю её(Acro_Rd_32.dll)
3) Затем пытаюсь написать
Код:
И выдаётся ошибка:
Код:
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();
Скажите
а) Почему для одних классов работает, а для других нет
б) Как сделать, чтобы работало для всех классов
Но просто есть классы у которых закрыт конструктор.
Тоесть через new myClass() доступ закрыт.
На Шарпе это выглядит примерно так
class myClass
{
protected myClass() { ... }
}
В таком случае надо найти компонент Функция(или параметр) которого возвращает нужний тип класса.
Я у себя подключил Acrobat.dll
Там есть класс про который ты говориш.
Так же есть интерфейс AcroApp
Можно создать свой класс котороый работает с интерфейсом акробата.
Но у меня
Acrobat.AcroAppClass myAcro = new Acrobat.AcroAppClass();
myAcro.Show();
Работает.
Открывает прогу акробата.
Но я добовлял в референсы без проги TlbImp.exe
И Acrobat 7.0.9
Нет. Конструкторы все открыты. Иначе бы они не высвечивались. Дело не в этом. А класс, для открытия приложения написать проще простого, но он мне не нужен. Что от него толку, если в нём нельзя обратиться к другим классам.
АПД. Кстати Excel данные отображает коректно, но вот в ячейке они записаны с апострофом, по видимому, этим символизируется их принадлежность к строковому типу.
__________________
Может,под регистрацией понимается RegSvr?А ещё интересно,как вы с помощью TLBImp делаете новую DLL
Цитата: @pixo $oft
Может,под регистрацией понимается RegSvr?А ещё интересно,как вы с помощью TLBImp делаете новую DLL
aldis, Tlbimp.exe - этопрограмма экспорта библиотек типов. На MSDN есть подробное описание и параметры запуска.