API - registrando uma dll via delphi ao inves de via regsvr32

Top  Previous  Next

// Can any one suggest me how can register DLL through Delphi by code, for

// eg: we type regsvr32 then DLL name on command line.

 

function RegisterActiveXServer(const ServerLocation: string; Register: Boolean): Boolean;

var

  ServerDllRegisterServer: function: HResult; stdcall;

  ServerDllUnregisterServer: function: HResult; stdcall;

  ServerHandle: THandle;

 

  procedure UnloadServerFunctions;

  begin

    @ServerDllRegisterServer := nil;

    @ServerDllUnregisterServer := nil;

    FreeLibrary(ServerHandle);

  end;

 

  function LoadServerFunctions: Boolean;

  begin

    Result := False;

    ServerHandle := SafeLoadLibrary(ServerLocation);

    if (ServerHandle <> 0) then

    begin

      @ServerDllRegisterServer := GetProcAddress(ServerHandle, 'DllRegisterServer');

      @ServerDllUnregisterServer := GetProcAddress(ServerHandle, 'DllUnregisterServer');

      if (@ServerDllRegisterServer = nil) or (@ServerDllUnregisterServer = nil) then

        UnloadServerFunctions

      else

        Result := True;

    end;

  end;

 

begin

  Result := False;

  try

    if (LoadServerFunctions) then

    try

      case (Register) of

        False: Result := ServerDllUnregisterServer = S_OK;

        True: Result := ServerDllRegisterServer = S_OK;

      end;

    finally

      UnloadServerFunctions;

    end;

  except

  end;

end;