Folgende Prozedure löst mein Problem:
Delphi-Quellcode:
procedure RegisterTLB(FileName:
String);
var
WFileName, DocName: WideString;
TypeLib: ITypeLib;
LibAttr: PTLibAttr;
DirBuffer:
array[0..MAX_PATH]
of char;
begin
if ExtractFilePath(FileName) = '
'
then
begin
GetCurrentDirectory(SizeOf(DirBuffer), DirBuffer);
FileName := '
\' + FileName;
FileName := DirBuffer + FileName;
end;
if not FileExists(FileName)
then
raise Exception.CreateFmt('
Datei "%s" nicht gefunden. Registrierung fehlgeschlagen!', [FileName]);
WFileName := FileName;
OleCheck(LoadTypeLib(PWideChar(WFileName), TypeLib));
OleCheck(TypeLib.GetLibAttr(LibAttr));
try
OleCheck(TypeLib.GetDocumentation(-1,
nil,
nil,
nil, @DocName));
DocName := ExtractFilePath(DocName);
OleCheck(RegisterTypeLib(TypeLib, PWideChar(WFileName), PWideChar(DocName)));
finally
TypeLib.ReleaseTLibAttr(LibAttr);
end;
end;
Damit kann ich zur Laufzeit die tlb registrieren. D.h. allerdings das ich die tlb mitliefern muss und bei der Installation registrieren muss. Danach kann ich die tlb aber wie löschen.
Nungut, Danke für eure Hilfe