Delphi中Ocx的动态注册方法

方法1

uses windows;

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;

方法2

procedure TForm1.Button1Click(Sender: TObject);
var
   astr:String;
   bstr:String;
   ProcAddr:Pointer;
   DllAddr:Integer;
begin
   od1.Execute;
   astr:=od1.FileName+chr(0);
   DllAddr:=LoadLibrary(PChar(astr));
   if DllAddr<>0 then
     begin
       bstr:='DllregisterServer'+chr(0);
       //只要将以上处改为DllUnRegisterServer即不注册ActiveX控件
       ProcAddr:=GetProcAddress(DllAddr,PChar(bstr));
       if ProcAddr<>nil then
         CallWindowProc(ProcAddr,DllAddr,0,0,0)
       else
           ShowMessage(od1.FileName+'不是有效的控件');
       FreeLibrary(DllAddr);
     end
   else
       ShowMessage(od1.FileName+'无法装载');
end;



uses OLEctl {, ....};
interface{...}
var  OCXHandle: THandle;
RegFunc: TDllRegisterServer;
begin
 
OCXHandle:= LoadLibrary('c:/XXX.ocx');
 
RegFunc := GetProcAddress(OCXHandle, 'DllRegisterServer');
 
if RegFunc <> 0 then ShowMessage('Error!');
 
FreeLibrary(OCXHand);
 
end;
 
或者
 
WinExec("regsvr32.exe/s yourocx.ocx",SW_NORMAL);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值