现在的位置: 首页 > 综合 > 正文

OCX控件注册

2013年01月04日 ⁄ 综合 ⁄ 共 1156字 ⁄ 字号 评论关闭
问:我写的系统中带了OCX控件,当系统编译后发行时必须带上该OCX控件,但在用户的机子上必须注册该OCX控件才能使用,否则程序运行会出错,请问用什么方法注册该OCX控件?
</P><P>答:提供以下几种方法供参考:
   1、在Windows命令行或DOS下运行:regsvr32 ocxname.OCX
   2、用Install Shield 做安装程序时,在里面选“Self-Registered”,安装程序将自动注册。
   3、在PB程序中调用regsvr32实现,安装程序只需负责将OCX拷贝到相应路径下,这个路径PB程序必须可以得到,建议拷贝到Windows系统目录或者与执行文件同目录下。
   具体代码:
   //首先定义API函数,如果OCX控件在与执行文件同目录下,使用GetCurrentDirectory函数;如果OCX控件放在系统目录下,使用GetSystemDirectory函数。
   Function ulong GetCurrentDirectory(ulong nBufferLength,ref string lpBuffer) Library "kernel32.dll" Alias for "GetCurrentDirectoryA"
   Function uint GetSystemDirectory(ref string lpBuffer,uint uSize) Library "kernel32.dll" Alias for "GetSystemDirectoryA"
   //假设OCX文件在Windows系统目录下,在PB应用(Application)的Open事件编写如下代码:
   string ls_PathName,ls_Command
   ulong ll_RequiredBufferSize
   ls_PathName = Space(255)
   ll_RequiredBufferSize = GetSystemDirectory(ls_PathName,255)
   IF ll_RequiredBufferSize=0 or ll_RequiredBufferSize>255 THEN
   //报错信息
   else
     ls_Command = "Regsvr32 /s " + "~"" + ls_PathName + "/Myocx.ocx" + "~""
     Run (ls_Command)
     …
   End if
   Regsvr32后面的"/s"执行参数是为了隐藏注册成功消息框。
   (此种方法由张涛提供)
   4、在PB应用程序中注册:
   函数声明:
   Function long DllRegisterServer() Library "ocxname.OCX"
   调用:
   LONG ll_RC
   ll_RC = DllRegisterServer()

 

抱歉!评论已关闭.