Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Вт 02 Дек 2008 21:52 Заголовок сообщения: Внешнее расширение для ИнГЕО |
|
|
Не могу получить интерфейс IngeoApplication с помощью GetActiveObject. В чем ошибка? |
|
Вернуться к началу |
|
 |
Tulon

Зарегистрирован: 11.07.2006 Сообщения: 77 Откуда: Сочи
|
Добавлено: Ср 21 Янв 2009 17:34 Заголовок сообщения: GetActiveObject |
|
|
Я использовал вот такую функцию - всё работает. Сверьтесь.
Код: | function GetActiveIngeoApp: IIngeoApplication;
var
anInterface: IUnknown;
begin
if GetActiveObject(CLASS_IngeoApplication,nil,anInterface)=S_OK then
Result:= anInterface as IIngeoApplication
else
Result:= nil;
end; |
_________________ Нет ни чего сложнее, чем достигнуть простоты. |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Пн 26 Янв 2009 11:34 Заголовок сообщения: |
|
|
В какой библиотеке хранится эта функция?
Я не могу найти данной спецификации.
Есть только GetActiveObject(ProgID: String), а она не работает. |
|
Вернуться к началу |
|
 |
Tulon

Зарегистрирован: 11.07.2006 Сообщения: 77 Откуда: Сочи
|
Добавлено: Пн 26 Янв 2009 12:33 Заголовок сообщения: |
|
|
Функция GetActiveObject(TGUID, Pointer, IInterface) находится в модуле ActiveX (библиотека oleaut32.dll). _________________ Нет ни чего сложнее, чем достигнуть простоты. |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Пн 26 Янв 2009 13:51 Заголовок сообщения: |
|
|
Нашел сам: в oleauto.
Спасибо за помощь |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Чт 19 Фев 2009 20:42 Заголовок сообщения: |
|
|
Сделал на C#, работающий код:
[DllImport("oleaut32.dll")]
public static extern long GetActiveObject(ref Guid rclsid, IntPtr pvResreved, out IntPtr ppunk);
public IngeoApplication GetActiveIngeo()
{
IntPtr ppunk;
Guid rclsid = new Guid("{04088492-0485-11D4-9719-000021C6D845}");
GetActiveObject(ref rclsid, IntPtr.Zero, out ppunk);
if (ppunk.ToInt32() != 0) return Marshal.GetObjectForIUnknown(ppunk) as IngeoApplication;
else return null;
} |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Пт 27 Фев 2009 10:03 Заголовок сообщения: |
|
|
А кто нибудь делал врапперы на TM2AddOnManager для .NET? |
|
Вернуться к началу |
|
 |
Tulon

Зарегистрирован: 11.07.2006 Сообщения: 77 Откуда: Сочи
|
Добавлено: Пт 27 Фев 2009 11:23 Заголовок сообщения: |
|
|
Алексей, а это не слишком жестоко совмещать старую модель API интерфейса и современную dotNET?
Может врапперы получится сделать используя Ingeo_TLB? _________________ Нет ни чего сложнее, чем достигнуть простоты. |
|
Вернуться к началу |
|
 |
Алексей В. Бастриков
Зарегистрирован: 02.06.2008 Сообщения: 118 Откуда: ООО "Инфопроект", г. Екатеринбург
|
Добавлено: Пт 27 Фев 2009 22:11 Заголовок сообщения: |
|
|
Я просто поинтересоваться хотел  |
|
Вернуться к началу |
|
 |
|