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;
Register OCX File & Library
Abonnieren
Posts (Atom)
Keine Kommentare:
Kommentar veröffentlichen