Форум: "Основная";
Текущий архив: 2003.06.05;
Скачать: [xml.tar.bz2];
Внизвопрос про работу с разными 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c