首页 文章

并排(或免注册COM)和Delphi? [重复]

提问于
浏览
3

可能重复:免注册COM / DLL?

我支持一个使用Delphi编写的大量ActiveX控件的应用程序,主要用于将应用程序聚合在一起 . 这些目前必须注册,这是好的,但不整洁 . 有没有人为Delphi(或任何其他非.NET解决方案)编写的DLL并排(或reg-free-com)?

1 回答

  • 2

    您可以使用Delphi并行注册免费COM,我相信您需要编写这样的清单文件,这是一个不精确且不完整的示例,但如果您按照各个地方可用的信息,并替换您自己的类和接口,我相信这显示了您需要做的最少量的条目:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
      <assemblyIdentity version="14.0.3615.26342" processorArchitecture="*" name="MyApp" type="win32"></assemblyIdentity>
      <description>my app description</description>
      <dependency>
        <dependentAssembly>
          <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="*" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
        </dependentAssembly>
      </dependency>
      <file name="MyComObject.DLL" hashalg="SHA1">
        <comClass clsid="{AA67839B-8AF0-4651-BDEE-96F01E44A682}" tlbid="{2E23AF44-33A0-48AD-88A9-948B004E0982}" description="MyClass"></comClass>
        <typelib tlbid="{EEEEEEE4-33A0-48AD-88A9-948B004E0982}" version="1.0" helpdir="" flags="FLAGS"></typelib>
      </file>
      <comInterfaceExternalProxyStub name="IMyThing" iid="{AAAAAAAA-4584-4AEE-9FA0-667460953082}" tlbid="{2E23AF44-33A0-48AD-88A9-948B004E0982}" proxyStubClsid32="{AAAAAAAA-0000-0000-C000-000000000046}"></comInterfaceExternalProxyStub>
    </assembly>
    

    你可以在这里找到更多帮助:

    http://www.mazecomputer.com/sxs/help/inside2.htm

    至于在Delphi中使用清单,必须将它包含在RC文件中,然后将该RC文件链接到EXE,并且不要检查项目选项(Delphi 2007或更高版本)中的“启用Windows主题”复选框将覆盖您尝试链接的清单 . 上面引用“Microsoft.Windows.Common-Controls”的部分是您识别Delphi / VCL应用程序主题的方式,因此如果您不想这样,请将整个XML依赖部分取出 .

相关问题