我用.NET写了一个组件DTD.DLL,然后在DELPHI中调用这个组件,不过在调用之前,必须手动使用命令regasm DTD.dLL注册这个组件后,在delphi中才可以调用。
  请问大家,有没有什么方法不用手动注册,而是让delphi程序在运行时检测到系统如果没有注册这个DLL组件的话,就自动注册?

解决方案 »

  1.   

    你可以用代码调用Com Dll 中的DllRegister函数进行注册
      

  2.   

    procedure RegisterDllConifg();
    var
      ARegistry: TRegistry;
    begin
      ARegistry := TRegistry.Create;
      with ARegistry do
      begin
        try
          RootKey := HKEY_CLASSES_ROOT; //指定根键为HKEY-LOCAL-ROOT
          if OpenKey('Licenses', False) then
          begin
            if (not OpenKey('4250E830-6AC2-11cf-8ADB-00AA00C00905', False)) then
            begin
              WinExec('regsvr <DTD.DLL>', SW_NORMAL);
              if OpenKey('4250E830-6AC2-11cf-8ADB-00AA00C00905', True) then
                WriteString('', 'kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun');
            end;
          end;
        finally
          CloseKey;
          Destroy;
        end;
      end;
    end;