Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Oberon
Перезагрузить страницу Как вызвать функцию OLE-объекта
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
sacred1972 sacred1972 вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2005
По умолчанию Как вызвать функцию OLE-объекта - 16.11.2005, 18:05

Подскажите как вызвать функцию OLE-объекта, если известно его имя, имя функции и типы параметров? Может не в том форуме спрашиваю, но во всяких там VisualC и Delphi есть типы Variant, и функции типа CreateOLEObject, а в Оберонах как сделать?
Видел В БлэкБоксе врапперы для MS Office (как пример), но там используются какие-то id функций (номера) а где их мне взять для произвольного OLE-сервера? У меня есть только имена... То есть: как написать свой враппер?
_______________________________________________
через день:
Нашёл 2 функции GetIDsOfNames и DispGetIDsOfNames, но первая - это метод интерфейса (ссылки на который у меня пока нет), а второй - требует первым параметром ITypeInfo. А где его взять?

Кстати, что означает такая запись, с точки зрения компонентного паскаля:
Код:
ITypeInfo* = POINTER TO ABSTRACT RECORD ["{00020401-0000-0000-C000-000000000046}"] (COM.IUnknown)
  END;
Интересуют квадратные скобки.
________________________________________________
ещё через день:
Нашёл чудесную функцию
Код:
WinOle.CLSIDFromProgID* (lpszProgID: WinApi.PtrWSTR; VAR [nil] lpclsid: COM.GUID): COM.RESULT;
Делает из строки типа "Word.Application" - GUID. Возникли новые вопросы. Где найти документацию о модуле COM? В частности, о типе COM.GUID? Опять же, квадратные скобки начинают просто пугать.
Профессионалы - помогите!
Ответить с цитированием
  (#2 (permalink)) Старый
sacred1972 sacred1972 вне форума
Member
 
Сообщений: 21
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.07.2005
По умолчанию Re: Доступ к OLE-функциям по имени. - 29.11.2005, 22:18

Всё. Разобрался. Напишу здесь, может кому ещё понадобится.
Код:
VAR
  res:COM.RESULT;
  GUID:COM.GUID;
  disp : WinOleAut.IDispatch;
  dispid : WinOleAut.DISPID;
  Name:WinApi.PtrWSTR;
  Params : WinOleAut.DISPPARAMS;
  result : CtlT.Variant;
BEGIN
(* Это имя моего Disp интерфейса в данном случае это 1С версии 7.7 *)
  res := WinOle.CLSIDFromProgID("V77.Application", GUID);
  res := WinOle.CoCreateInstance(GUID, NIL, CtlT.context, COM.ID(disp), disp); 
  Name := "PropertyName"; (* Здесь надо заполнить имя свойства или метода *)
  res := disp.GetIDsOfNames(WinOle.GUID_NULL, Name, 1, WinApi.GetUserDefaultLCID(), dispid);
(* получили dispid метода или свойства, теперь можем его вызвать *)
  res := disp.Invoke(dispid, WinOle.GUID_NULL, WinApi.GetUserDefaultLCID(), WinOleAut.DISPATCH_PROPERTYGET, Params, result, NIL, NIL);
Пример дан для чтения из свойства. его легко адаптировать для вызова методов. В этом случае необходимо заполнить WinOleAut.DISPPARAMS. Как это сделать обсуждалось в соседней ветке.

Вообще этот механизм нужен для COM-объектов, для которых описан в документации только disp-интерфейс.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удаётся вызвать функцию через указатель trixtrax Вопросы начинающих программистов 3 27.10.2008 22:35
Как программно вызвать функцию shurikvrn C++ Builder 1 12.03.2006 17:43
Как в VBA вызвать функцию WinAPI? Anonymous Visual Basic 3 18.10.2005 14:05
Можно ли вызвать api функцию с помощью rundll32 va_alex WinAPI 3 17.10.2005 09:28
Как вызвать javascript-функцию из другого фрейма senglory DHTML, JavaScript, VBScript 3 08.07.2005 11:28
Как можно вызвать из функции класса окна например функцию FindWindow uncon Visual C++ 2 15.04.2005 14:55
как из программы вызвать функцию Поиск решения в Excel Максимус Delphi 1 16.10.2004 18:03
Как вызвать Api функцию из MFC приложения toFlash Visual C++ 2 17.02.2004 11:09
Как вызвать функцию DLL St@lker Visual C++ 5 09.02.2004 12:05
Как функции-члену объекта одного класса передать в качестве аргумента функцию Anonymous Visual C++ 1 28.01.2004 16:55
как вызвать функцию FCTSEasyLanguageErrorDlg@@QAEXXZ из dll Anonymous Visual C++ 0 22.07.2003 12:57
Как вызвать функцию-член другого класса EasyRider Visual C++ 5 04.02.2003 15:51



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов