Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   registerassembly aus einerdll registrieren. (https://www.delphipraxis.net/165214-registerassembly-aus-einerdll-registrieren.html)

Digielm 19. Dez 2011 09:48

registerassembly aus einerdll registrieren.
 
Hallo Zusammen ich habe in einer dll einen Typ
TYPELIB eingefügt.

dort sind TLBs auf DElphi ActiveX typen und auch Assembly Typelibs.

Ich rufe diese Routine auf.

Delphi-Quellcode:
    for i := 0 to FExeFile.Resources.Count -1 do
    begin
      if (Uppercase(FExeFile.Resources.Items[i].Name) = 'TYPELIB') then
      begin
        for j := 0 to FExeFile.Resources.Items[i].List.Count-1 do
        begin
          AppName := ExtractFilePath(Application.ExeName)+'ccimages.dll\' + FExeFile.Resources.Items[i].list.Items[j].Name;
          try
            OleCheck(LoadTypeLib(PWideChar(AppName), tlib));

            OleCheck(RegisterTypeLib(tlib, PWideChar(AppName),nil));
          except
            on e:Exception do
            begin
              ShowMessage(Format(strExRegFailure,[j+1,E.Message]));
            end;
          end;
        end;
      end;
    end;
bei Win32 Typelibs klappt das auch alles.

Nur wenn ich ASsemblys als Typelib reinsetze nicht mehr.

ich habe den Source TREGSVR durchstöbert und dort einiges gefunden, nur muss bei dem Aufruf die assemlbyTypelib als Datei vorliegen.

Wie kann ich das anpassen, dass ich die Typelib aus einer Resource in einer DLL registriert bekomme ??

Assarbad 10. Apr 2012 22:56

AW: registerassembly aus einerdll registrieren.
 
Also ich weiß nur daß ATL das kann. Ich würde mich also einfach auf MSDN-Library durchsuchenAtlRegisterTypeLib stützen welches du in der atl71.dll findest. Kommt natürlich drauf an auf welchen Systemen das laufen soll. Diese Funktion existiert aber in den atl<irgendwas> DLLs die ich auf meinem System habe.

MSDN-Library durchsuchenRegisterTypeLib und MSDN-Library durchsuchenLoadTypeLib werden übrigens intern von AtlRegisterTypeLib aufgerufen.

Hättest du auch noch sinnvolle Details was genau schiefläuft? Bspw. die exakten Fehlercodes ...

Außerdem: ich kenne nicht dein FExeFile.Resources.Items[i].list.Items[j].Name, aber es gibt da verschiedene Notationen. Du mußt dort exakt den Index angeben ... es darf scheinbar kein anderes Zeichen als Ziffern enthalten sein (also nicht bspw. #). Wäre interessant das mal zu überprüfen welcher String dort zusammengebastelt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz