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

Вниз

вопрос про работу с разными Interface ами   Найти похожие ветки 

 
XobBIT ©   (2003-05-21 16:52) [0]

Есть ли возможность в run-time получить список всех свойств из определенного интерфейса


 
Romkin ©   (2003-05-21 17:11) [1]

Если это потомок IDispatch - можно, всегда. Есть type library


 
XobBIT ©   (2003-05-21 17:19) [2]

Да потомок IDispatch, но если можно код программы...


 
Набережных С.   (2003-05-21 20:03) [3]

IDispatch здесь вообще-то не при чем. Загружаешь библиотеку типов, в которой описан интерфейс (если она есть), а потом ItypeLib.GetTypeInfo, ITypeInfo.GetTypeAttr и GetDocunentation


 
XobBIT ©   (2003-05-22 10:55) [4]

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


 
XobBIT ©   (2003-05-23 18:39) [5]

Вообще вопрос ITypeInfo, в каком юните находится, и где иожно найти фак по нему...


 
Набережных С.   (2003-05-23 19:43) [6]

uses ...ActiveX...
procedure TForm1.Button1Click(Sender: TObject);
var
Lib: ITypeLib;
Info: ITypeInfo;
n, k: integer;
pAttr: PTypeAttr;
pDesc: PFuncDesc;
s: WideString;
begin
if OpenDialog1.Execute then
begin
s:=OpenDialog1.FileName;
OleCheck(LoadTypeLib(PWideChar(s), Lib));
try
for n:=0 to Pred(Lib.GetTypeInfoCount) do
begin
OleCheck(Lib.GetTypeInfo(n, Info));
OleCheck(Info.GetTypeAttr(pAttr));
try
if
(pAttr.typekind = TKIND_INTERFACE) or
(pAttr.typekind = TKIND_DISPATCH)
then
begin
Info.GetDocumentation(-1, @s, nil, nil, nil);
Memo1.Lines.Add(s);
for k:=0 to Pred(pAttr.cFuncs) do
begin
OleCheck(Info.GetFuncDesc(k, pDesc));
try
Info.GetDocumentation(pDesc.memid, @s, nil, nil, nil);
Memo1.Lines.Add(#9 + s);
finally
Info.ReleaseFuncDesc(pDesc);
end;
end;
end;
finally
Info.ReleaseTypeAttr(pAttr);
end;
end;
finally
Lib:=nil;
end;
end;
end;
Тока если есть ошибки - чур, я не виноват. Сам проверяй.


 
XobBIT ©   (2003-05-24 00:06) [7]

2 Набережных С.: этот код работает только с *.ocx ?


 
Набережных С.   (2003-05-24 12:13) [8]

Этот код работает с любой библиотекой типов - в tlb, exe, dll, ocx etc.


 
XobBIT ©   (2003-05-24 12:52) [9]

2 Набережных С.: Код нормальный просто сразу не вьехал ;)

Но есть вопрос: А можно брать не все интерфейсы, а какой-нибудь определенный и как вызвать свойство...

Заранее спасибо


 
Polevi ©   (2003-05-24 12:54) [10]

GetIdsOfName, Invoke


 
XobBIT ©   (2003-05-24 13:52) [11]

Я воспользовался ITypeLib.GetTypeInfoOfGuid;

Но появился вопрос, как узнать GUID интерфейса



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

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

Наверх




Память: 0.49 MB
Время: 0.022 c
3-13004
zubbo
2003-05-19 12:18
2003.06.05
Небоьшой вопрос.


3-13036
LittleGirly
2003-05-15 16:03
2003.06.05
Помогите девушке с QuickReport-ом


14-13372
rosl
2003-05-21 05:41
2003.06.05
скопировать или удалить файл


14-13459
zyurik
2003-05-19 19:57
2003.06.05
FastDIB


7-13490
Tenrai
2003-04-04 04:59
2003.06.05
SetWindowsHookEx() или как отловить нажатие клавиши