今天转了一些常用处理方法,经常用得到这些方法,自己以不想抄,只能COPY了。

方法一: 
 1.手工注册OCX控件 
将该控件随程序一起发布,然后,将此文件拷到windows\system,或者直接放在本运行目录,然后执行dos命令,run( "regsvr32   *.ocx ") 
*表示具体的文件。然后写注册表,将控件注册标志置为1,在程序开始运行时,先检查该标志,是否需要进行注册

2.自动注册OCX控件 
在OCX控件中一般都包含一个DLLRegisterServer函数,可以用此函数来实现OCX控件自动注册。

例如:我们要在应用中自动注册ActiveMovie控件,首先声明外部函数: 
Function   Long   DllRegisterServer()   LIBRARY   "amovie.ocx " 
然后在脚本中调用此函数: 
DLLRegisterServer() 
注意:不能保证此方法对所有OCX控件都适用!   
  
方法二: 
1、在DOS或Windows命令行下运行:regsvr32   ocxname.OCX   注册 
2、用Install   Shield,在里面选“Self-Registered”,安装程序将自动注册。 
3、在PB应用程序中注册: 
函数声明: 
Function   long   DllRegisterServer()   Library   "ocxname.OCX " 
调用: 
LONG   ll_RC 
ll_RC   =   DllRegisterServer() 
  
方法三: 
  为了扩展应用程序的功能,许多系统都使用了或多或少的ActiveX控件,这些控件必须在系统中注册后才能够使用。所以分发PowerBuilder应用程序时,必须将系统所使用到的这些ActiveX控件一起分发到用户所使用的计算机上,并且注册它们,只有这样系统才能继续使用这些控件。   
  本文将提供三种实现方案,供读者选择使用。   
  方法一:在InstallShield中使用程序对控件进行注册

  InstallShield提供了一套编程语言,语法规则与C++语言非常类似,使用很容易掌握。选中“Scripts”页,你就可以看到安装程序实际执行的源代码,通过添加代码可以实现许多功能。要注册控件必须先将控件所需文件拷贝到目标计算机上,所以必须选择适当的位置添加注册语句。SetupRegistry()函数就是在文件复制完毕后进行系统注册的地方,所以在这里注册控件最合适。

  function   SetupRegistry()   
    NUMBER   nRootKey,   nResult;   
    STRING   szProgram,   szCmdLine,   szMsg;   
    STRING   szHkey;   
    STRING   szKey,   szClass,   szNumName,   szNumValue;   
  begin   
    nResult   =   CreateRegistrySet( ″″ );   
  //注册程序中用到的OCX控件   
  szProgram   =   ″Regsvr32   /s″;   
  //假设我们将Myocx.ocx文件复制到〈COMMONFILES〉\My   Shared下   
  szCmdLine   =   COMMONFILES^″\\My   Shared\\Myocx.ocx″;   
  //给执行文件路径加上引号   
  LongPathToQuote   (szCmdLine,   TRUE);   
  //执行生成的命令:例如Regsvr32   /s   ″C:\   Program   Files\Common   Files\My   Shared″。   
  if   (LaunchAppAndWait(szProgram,   szCmdLine, WAIT) < 0)   then   
     MessageBox(″MyAnimateX   控件注册失败!″,   SEVERE);   
  end if;   
     return   nResult;   
  end;

方法四:用注册表的方法实现   
  大家知道,一般安装程序结束后,为了使系统可以运行,经常需要重新启动计算机,这是由于安装程序修改了注册表或者一些系统文件(Autoexec.bat等),必须重新启动才能生效。注册表中有这样一个主键,专门用于存放一些只运行一次的程序,存放在这里的一些执行命令只是在Windows系统启动时运行一次,之后便被清空,所以取名为RunOnce:

  HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce,所以我们可以在InstallShield中的注册表编辑器中在该主键下添加要执行的代码,来完成控件的注册,如上图所示。

  注意,此方法必须保证安装程序弹出“是否重新启动计算机”的对话框,这样才能保证用户知道必须重启后才能正常使用本系统。   
  

方法五:在PB程序中实现   
  安装程序只需负责将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″   
  //在PB应用(Application)的Open事件,假设OCX控件在Windows系统目录下。   
  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”执行参数是为了隐藏注册成功消息框。

源文章

PB自动注册OCX控件相关推荐

  1. 做VB的,经常注册和反注册OCX控件和DLL链

    做VB的,经常注册和反注册OCX控件和DLL链 但是,每次都要 "开始"--"运行" --"regsvr32 C:\********\******.o ...

  2. 【c++】注册OCX控件

    几种注册OCX控件的方法. 一. 如果是自己编写的程序,可以以管理员身份打开VS,编译通过后即注册成功. 二.在 控制面板->用户帐户和家庭安全->用户帐户->更改用户帐户控制设置- ...

  3. Win7 64位系统 注册 ocx控件

    32位系统注册ocx就不谈了.网上一搜一大把.下面说下win7 64位 旗舰版下如果注册ocx控件 1.首先复制 XXXX.OCX文件到"C:\Windows\SysWOW64"目 ...

  4. 64位操作系统注册ocx控件失败,提示:模块加载失败请确保该二进制存储在指定路径中。

    64位操作系统注册ocx控件失败,提示:模块加载失败请确保该二进制存储在指定路径中 我的解决方案: 1.找到位于windows下的syswow64文件夹下的cmd 2.并拷贝需注册的ocx文件到sys ...

  5. win10注册ocx控件的步骤(包含错误处理方法0x80040200)

    最近在测试一个加载ocx控件的C++程序,运行前要先注册ocx控件. 1.用运行命令提示符或者PowerShell. 2.利用命令进入到ocx文件所在的目录下输入注册命令 注册命令:regsvr32 ...

  6. 自动注册MSComm控件

    MSComm通信控件具有丰富的与串口通信密切相关的属性及事件,提供了一系列标准通信命令的接口,可以用它创建全双工的.事件驱动的.高效实用的通信程序.这里将介绍如何把用MSComm这个ActiveX控件 ...

  7. windows下注册ocx控件

    VC编程经常要用到一些第三方xxx.ocx控件(具体到各个控件的名称),在用之前需要注册,总结了两种方法. 方法一: 1,对于32位系统将xxx.ocx拷贝到C:\Windows\System32,对 ...

  8. 自动注册activex控件

    编写Delphi应用程序时,经常会遇到一些ActiveX控件[注:扩展名为OCX的控件或DLL的类型库],它们为应用程序的开发提供了简单的操作途径.然而,这些程序在发布的同时,面临ActiveX控件注 ...

  9. Win7 下如何注册OCX控件 。0x80040200错误。

    一.先尝试右键以管理员身份运行cmd.如果不行继续下一步. 二.将cmd切换到用administrator账户进行开启,然后再用regsvr32方式进行控件注册 管理员权限运行命令提示符,输入 net ...

  10. Win7 注册ocx控件 “DllRegisterServer的调用失败,错误代码为0x80040200 ”

    在 win7系统下, 在运行里运行 regsvr32 *.OCX 时, 出来"* .OCX 已加载,但对DllRegisterServer的调用失败,错误代码为0x80040200" ...

最新文章

  1. Redis 主从配置和参数详解
  2. git更改已提交作者用户名
  3. 旋转函数_一招搞定高中数学函数平移旋转问题
  4. 计算机网络知识培训计划,计算机网络管理员教学计划和大纲
  5. Hive 0.13 数据类型
  6. leetcode 303. 区域和检索 - 数组不可变
  7. 深度学习(03)-- CNN学习
  8. Visual Studio 2017版本15.9现在可用
  9. oracle数据库非归档模式数据备份和恢复
  10. android删除电池功能,Android教程:删除电池信息增加待机时间
  11. Ubuntu 出现apt-get: Package has no installation cand
  12. tensorflow版PSENet 文本检测模型训练和测试
  13. 计算机基础知识第三章测试,计计算机应用基础第三章测试题
  14. 系统登录界面(收集)
  15. 《史蒂夫·乔布斯传》——童年篇有感
  16. 面向Java程序员的Scala教程
  17. 爬取淘宝历史价格,通过请求接口,获取到数据
  18. 使用Java写文件不覆盖原有内容
  19. U盘文件变成快捷方式的解决方案
  20. Java Eclipse internal error Polling news feeds 解决方案

热门文章

  1. 魔兽世界服务器维护后稀有宠物刷新,魔兽世界猎人稀有宠物图签与刷新方式时间介绍...
  2. Unity 防止数组索引越界的几种方法
  3. 计算机网络telnet命令作用,全面解析telnet命令
  4. python爬取视频代码
  5. NTP/PTP时间同步入门
  6. Android应用签名
  7. Win11快捷键大全
  8. MATLAB中的norm函数
  9. PowerDesigner 报错 Could not Initialize JavaVM!
  10. 工作中常用的25个Excel操作技巧,附详细步骤,收藏备用