![]() |
Модераторы: Partizan, gambit |
![]() ![]() ![]() |
|
infarch |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
Возникла у меня необходимость написать приложение на c#. Простая форма, а на ней - ActiveX контрол. Если кто знает - AutoVue от Оракла. Документации практически нет, только скудный пример на бейсике. Ну хорошо, форму создал, контрол работает. Теперь надо слушать его события. Вот кусок из того примера на бейсике.
Главное что меня интересует: EventID = e.arg0.getEventID(). Надо получит айди события. Начал писать на c#:
И вот тут облом ( arg0 имеет тип Object и никакого getEventID там нет. Через e.arg0.GetType() уточнил что тип его на самом деле System.__ComObject. И что это за тип? Студия притворяется что не знает такого. А бейсик работает себе, гад такой. Ну не верю я что он круче! Да и не подходит мне он, на си написать надо. Может кто подскажет как выкрутиться из ситуации? |
||||
|
|||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Круче, круче - не сомневайся ![]() На самом деле, если ты пишешь на последней(в данный момент 4-ой) версии шарпа, то можно использовать что-то вроде
-------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Fortnox |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 373 Регистрация: 31.10.2008 Где: Ростов-на-Дону Репутация: 14 Всего: 22 |
Мм, помню был похожий случай, когда я делал экспорт в Word одной фигни. Помогло приведение типов.
Может в вашем случае, достаточно привести е к типу AxJVueAXLib.IID_ISource_onFileEventEvent (или посмотреть, как тип во время отладки). |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Ну он же написал, что тип - _ComObject -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
Voyager |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 532 Регистрация: 8.2.2005 Репутация: 3 Всего: 18 |
Ну и что, _ComObject можно приводить к соответствующим интерфейсам.
|
|||
|
||||
infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
Конечно можно приводить... Вот только надо знать к каким. Я бы давно уже попробовал. Итак, эксперимент не удался:
System.NotImplementedException was unhandled by user code Message=The method or operation is not implemented. Source=mscorlib StackTrace: at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at System.Dynamic.ComRuntimeHelpers.GetITypeInfoFromIDispatch(IDispatch dispatch, Boolean throwIfMissingExpectedTypeInfo) at System.Dynamic.IDispatchComObject.EnsureScanDefinedMethods() at System.Dynamic.IDispatchComObject.System.Dynamic.IDynamicMetaObjectProvider.GetMetaObject(Expression parameter) at System.Dynamic.DynamicMetaObject.Create(Object value, Expression expression) at System.Dynamic.DynamicMetaObjectBinder.Bind(Object[] args, ReadOnlyCollection`1 parameters, LabelTarget returnLabel) at System.Runtime.CompilerServices.CallSiteBinder.BindCore[T](CallSite`1 site, Object[] args) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at CallSite.Target(Closure , CallSite , Object ) at System.Dynamic.UpdateDelegates.UpdateAndExecute1[T0,TRet](CallSite site, T0 arg0) at AutoVue.Form1.av_onFileEvent(Object sender, IID_ISource_onFileEventEvent e) in C:\Users\sku\Documents\Visual Studio 2010\Projects\AutoVue\AutoVue\Form1.cs:line 49 at AxJVueAXLib.AxJVueAXControl.RaiseOnonFileEvent(Object sender, IID_ISource_onFileEventEvent e) at AxJVueAXLib.AxJVueAXControlEventMulticaster.onFileEvent(Object arg0) InnerException: |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Ну это означает только то, что данный объект не содержит такого метода. Ты уверен, что приведенный тобой код на бейсике работает? Я ведь только показал как можно на шарпе написать то, что ты привел, а с этим компонентом я не знаком. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
infarch |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 13.3.2009 Репутация: 1 Всего: 1 |
В том то и дело что работает :( Я получаю все айди, без проблем.
|
|||
|
||||
diadiavova |
|
||||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: 31 Всего: 142 |
Ну попробуй через рефлексию, но это гемор.
Это сообщение отредактировал(а) diadiavova - 25.11.2011, 03:31 -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |