打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Delphi中Ocx的动态注册方法

Delphi中Ocx的动态注册方法

时间:2011-5-26来源:yang 作者: peng点击: 11次

Delphi中Ocx的动态注册方法2007年12月10日 星期一 14:46Delphi中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);
 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Delphi下DLL编程知识
Delphi版Ocx制作CAB
VC2008如何生成及使用DLL(完整版)
DLL程序开发实例
LIB和DLL的区别与使用
BCB客户端tuxedo开发实例
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服