Как создать на C# объект, наследуемый от IDispatch, который можно включить в более старые программы, использующие ActiveX.

впервые на SO, хотя я много пользовался сайтом, я сразу перейду к делу.

Моей фактической конечной целью является создание объекта, наследуемого от интерфейса IDispatch в C#, который можно использовать в Canvas внутри Oracle Forms Builder (Oracle Developer Suite 10g (10.1.2.0.2))

Есть ли у кого-нибудь ресурсы, где я могу узнать, как это сделать, или где показаны какие-либо примеры этого?

Чтобы достичь своей цели, я зашел на этот сайт: http://www.codeproject.com/Articles/24089/Create-ActiveX-in-NET-Step-by-Step

Здесь я получил некоторый код, который позволил мне создать и протестировать объект ActiveX. Я считаю, что все объекты, используемые структурой COM. Затем я зарегистрировал это с помощью regasm, а затем попытался вызвать его. Я смог назвать это успешным в IE.

Через некоторое время я собирался воссоздать этот активный объект X; однако всякий раз, когда я пытаюсь импортировать его в формы Oracle, я получаю сообщение об ошибке, например:

введите здесь описание изображения

Мне ошибка кажется очень ясной, я, очевидно, не реализовал какой-то метод, который мне нужно реализовать в форме оракула. Какие методы мне нужно реализовать и как это должно быть реализовано.

Извините за длинный вопрос, любая помощь по этому поводу будет оценена по достоинству.


person Aelphaeis    schedule 06.08.2013    source источник
comment
Oracle Forms Builder просто нуждается в элементе управления ActiveX. Если вы успешно запустите этот элемент управления в IE, он должен работать там. Вы уверены, что это не 32/64-битная проблема?   -  person Simon Mourier    schedule 06.08.2013
comment
Я не верю, что это 32/64-битная проблема из-за характера сообщения об ошибке. Я сделал быстрый поиск в Google, и ничто из того, что я прочитал на первой странице, не указывало на возможность проблем с 32/64-битной версией. Кроме того, я перекомпилировал код для платформы x86 и получил ту же ошибку.   -  person Aelphaeis    schedule 07.08.2013
comment
Проблемы с 32/64 битами связаны не только с компиляцией, но и с регистрацией. Сообщение об ошибке довольно общее   -  person Simon Mourier    schedule 07.08.2013
comment
Я вижу, если честно, у меня не было серьезных проблем с совместимостью 32/64 бит в этом проекте; однако я также знаю, что у меня нет реализации метода VIEWER в объекте OLE, поэтому я совершенно уверен, что мне нужно реализовать какой-то интерфейс, о котором я не знаю.   -  person Aelphaeis    schedule 07.08.2013
comment
Если это работает в IE, все должно быть в порядке. В противном случае вы можете реализовать ICustomQueryInterface для отслеживания вызовов QI и посмотреть, не увидите ли вы что-то связанное.   -  person Simon Mourier    schedule 08.08.2013


Ответы (1)


Я предлагаю вам начать с чтения этого описания в MSDN интерфейсы, управляемые ActiveX, могут открываться.

Вам нужно будет реализовать хотя бы минимальную функциональность (т. е. минимальный набор интерфейсов), чтобы Oracle Forms Builder оставался довольным. Просто реализовать IDispatch недостаточно.

person Chris Dickson    schedule 07.08.2013