this slowpoke moves

Register OCX File & Library

type
  TDllRegisterServer = function: HResult; stdcall;
  
//

function RegisterOCX(FileName: string): Boolean;
var
  OCXHand: THandle;
  RegFunc: TDllRegisterServer;
begin
  OCXHand := LoadLibrary(PChar(FileName));
  RegFunc := GetProcAddress(OCXHand, 'DllRegisterServer');
  if @RegFunc <> nil then
    Result := RegFunc = S_OK
  else
    Result := False;
  FreeLibrary(OCXHand);
end;

function UnRegisterOCX(FileName: string): Boolean;
var
  OCXHand: THandle;
  RegFunc: TDllRegisterServer;
begin
  OCXHand := LoadLibrary(PChar(FileName));
  RegFunc := GetProcAddress(OCXHand, 'DllUnregisterServer');
  if @RegFunc <> nil then
    Result := RegFunc = S_OK
  else
    Result := False;
  FreeLibrary(OCXHand);
end;

function RegisterServer(const aDllFileName: string; aRegister: Boolean): Boolean;
type
  TRegProc = function: HResult;
  stdcall;
const
  cRegFuncNameArr: array [Boolean] of PChar =
    ('DllUnregisterServer', 'DllRegisterServer');
var
  vLibHandle: THandle;
  vRegProc: TRegProc;
begin
  Result := False;
  vLibHandle := LoadLibrary(PChar(aDllFileName));
  if vLibHandle = 0 then Exit;
    @vRegProc := GetProcAddress(vLibHandle, cRegFuncNameArr[aRegister]);
  if @vRegProc <> nil then
    Result := vRegProc = S_OK;
  FreeLibrary(vLibHandle);
end;

// Register
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then begin
    try
    RegisterOCX(OpenDialog1.FileName);
    except
    ShowMessage('Error Register OCX file');
    end;
  end;
end;

// Unregister
procedure TForm1.Button2Click(Sender: TObject);
begin
  if OpenDialog1.Execute then begin
    try
    UnRegisterOCX(OpenDialog1.FileName);
    except
    ShowMessage('Error Unregister OCX file');
    end;
  end;
end;

// DLL Library Register
procedure TForm1.Button3Click(Sender: TObject);
begin
  if OpenDialog1.Execute then begin
    try
    RegisterServer(OpenDialog1.FileName, true);
    except
    ShowMessage('Error Register DLL Library file');
    end;
  end;
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate