Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

COM-объект и слово SET   Найти похожие ветки 

 
Наиль ©   (2006-06-27 21:21) [0]

Пользуюсь файловым менеджером «Диско Командир» и решил написать к нему plug-in по инструкции http://disco.ru/russian/products/commanderplugins.htm. До этого COM никогда не писал (надобности не было). По инструкции:
Интерфейс IStr служит для передачи символьной информации между ДИСКо Командиром и компонентой расширения и имеет следующий метод:
HRESULT Set([in] LPCSTR str) - установка символьной информации.

Я это понял так:
type
IStr=Interface(IUnknown)
 Function Set(const str: LPCSTR):HResult;
End;

Вопрос:
как выполнить инструкцию, если слово Set использовать нельзя?


 
Lamer@fools.ua ©   (2006-06-27 21:39) [1]

>как выполнить инструкцию, если слово Set использовать нельзя?

Используйте другое название (например, SetValue). В COM-интерфейсах, если мне не изменяет склероз, важен порядок, а не сами названия.


 
icWasya ©   (2006-06-28 13:00) [2]

Хорошо бы получить от разработчиков описания интерфейсов на каком-нибудь языке программирования - на С++ или IDL. Например, какой должен быть IID у интерфейса IStr ?


 
Наиль ©   (2006-06-29 06:47) [3]


> Хорошо бы получить от разработчиков описания интерфейсов
> на каком-нибудь языке программирования - на С++ или IDL.

Согласен. Это первая мысль которая приходит на ум, при прочтении инструкции. Но с другой стороны, инструкция предельно ясна для сишника который написал хотя бы один COM. Но я к ним не отношусь.

> Например, какой должен быть IID у интерфейса IStr ?

В данном случае он не нужен, т.к. IID используется для нахождения DLL через реестр, т.е. позволет подменять путь DLL без вреда для работающих с интервейсом программ. А нам путь к DLL известен заранее. С другой стороны, чужой код должен каким-то образом определить, подходит ли предложеный ему класс под соотвествующий интерфейс.
Сразу хочу сказать, что ни один из перечисленых в инструкции интерфейсов в моём реестре не зарегистрировался. Хотя plug-ins идущие с программой работают.
Но главный вопрос в следующем. Что передётся в качестве экземпляра класса? Аналог VMT (список сылок на методы в определёном порядке) или аналог RTTI (метод можно найти по строковому обозначению). Второе маловероятно, т.к. это уже будет не COM, а ActiveX. Но остаются сомнения, потому что выходит, что разработчик (я) для реализации собственого COM, должен точно знать не только о методах, но и об их порядке.


 
icWasya ©   (2006-06-29 09:43) [4]

>>В данном случае он не нужен, т.к. IID используется для нахождения DLL через реестр, ...
Я не про это. Вы говорите про CLSID.
>> С другой стороны, чужой код должен каким-то образом определить, подходит ли предложеный ему класс под соотвествующий интерфейс.
А вот для этого каждый интерфейс должен иметь GUID. В метод QueryInterface подаётся именно GUID запрашиваемого интерфейса.
Ну и соответственно
>> разработчик ... должен точно знать не только о методах, но и об их порядке.

А инструкция годится как справочник для понимания, что же должен делать каждый метод каждого интерфейса, но для разработки информации маловато.



Страницы: 1 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.059 c
15-1152813902
Dok_3D
2006-07-13 22:05
2006.08.13
Препараты для улучшения работы мозга


3-1149677605
Tornado
2006-06-07 14:53
2006.08.13
Вставить запись из Акцесс в MS SQL (продолжение :)


15-1153198548
antonn
2006-07-18 08:55
2006.08.13
вопросик по пхп


15-1152946131
SerJaNT
2006-07-15 10:48
2006.08.13
Мастерам JavaScript


3-1149323064
АНОНИМ
2006-06-03 12:24
2006.08.13
Закрыть базу Access