Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.017 c
1-13236
Vitalik
2003-05-27 14:04
2003.06.05
class


3-13020
vil
2003-05-16 12:14
2003.06.05
выборку из access в ms sql server


14-13467
Анат
2003-05-18 13:01
2003.06.05
Графический редактор.


7-13485
Money
2003-04-03 22:37
2003.06.05
Помогите получить информацию с пульта ду.


1-13285
AleksLife
2003-05-24 12:14
2003.06.05
Точное расположение при разном разрешении




   Наверх