`
isiqi
  • 浏览: 16496865 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

pb自动注册ole控件

阅读更多

pb自动注册ole控件

默认分类 2011-02-28 11:32:05 阅读50 评论0 字号:订阅

方法一:
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 = 0or ll_RequiredBufferSize > 255THEN
  //报错信息
  else
ls_Command= ″Regsvr32/s″+ ″~″″+ ls_PathName+ ″\Myocx.ocx″+ ″~″″
Run(ls_Command)
//....
End if

  Regsvr32后面的“/s”执行参数是为了隐藏注册成功消息框

分享到:
评论

相关推荐

    pb打开web ole控件

    标题 "pb打开web ole控件" 指的是在PowerBuilder(PB)环境中利用OLE(Object Linking and Embedding)控件来打开和显示Web页面的技术。PowerBuilder是一款流行的可视化的编程工具,常用于开发企业级的应用程序。OLE...

    PB 插入OLE控件内存溢出的终极解决法

    PB 插入OLE控件内存溢出的终极解决法 PB 中插入 OLE 控件时,应用程序自动关闭的现象经常出现,这是由于 PB 中插入 OLE 控件时,会搜索那些控件可用,并且在PB 中显示出来,但是在搜索控件时,如果发现控件冲突,PB...

    pb插入ole控件点击insert+control时pb应用程序自动关闭解决思路

    ### pb插入OLE控件点击insert+control时pb应用程序自动关闭解决思路 #### 问题现象 在使用PowerBuilder(以下简称pb)开发过程中,当尝试通过insert + control的方式插入OLE控件时,应用程序出现意外关闭的情况。 ...

    pb9.0插入ole控件时出错的修复工具

    标题 "pb9.0插入ole控件时出错的修复工具" 涉及到的是在PowerBuilder(PB)9.0版本中处理OLE(Object Linking and Embedding)控件时遇到的问题以及对应的解决方案。OLE是Microsoft开发的一种技术,允许不同应用程序...

    PB ole的控件冲突解决方法

    当点击OLE控件中的“Insert Control”按钮时,PB会搜索系统中注册的所有控件,并将这些控件的信息展示出来供开发者选择。这一过程涉及到注册表的读取与处理。 **PB搜索控件的位置**: - 注册表中的位置为:“HKEY_...

    pb11.5 嵌入ole控件web browser 通过html页面打开窗口

    在PB11.5(PowerBuilder 11.5)中,嵌入OLE控件Web Browser是一种常见的技术,用于在应用程序内部展示网页内容并实现与网页的交互。本主题将详细探讨如何使用此功能,以及如何通过HTML页面的链接来控制窗口的打开。 ...

    PB插入OLE控件崩溃的解决办法

    4. **注册表错误**:注册表中的某些键值设置不正确,影响OLE控件的正常注册和使用。 #### 解决方案 根据给定的部分内容,我们可以推测解决方案可能涉及到了对系统文件的权限修改以及备份操作。下面将详细介绍具体...

    64位,win7,PB,OLE控件出错问题

    在 PowerBuilder 中插入 OLE 控件时,可能会出现冲突问题,导致应用程序自动关闭。这种问题在 32 位系统下有解决方案,但是在 64 位系统下却没有。下面我们将讨论在 Windows 7 64 位系统下插入 OLE 控件时的解决方案...

    pb insert ole control 非法关闭退出的解决办法

    当用户尝试在PB中插入OLE控件时,系统会自动搜索可用的控件,并将它们显示在列表中。这个过程涉及读取注册表中的“HKEY_CLASSES_ROOT\CLSID”子项,这些子项包含了DLL和OCX文件的注册信息。如果某个DLL或OCX与PB存在...

    PB插入OLE崩溃解决方案-快捷方便

    5. **注册控件**:使用`regsvr32`命令重新注册OLE控件,或者通过PB的自身注册功能进行注册。 6. **错误日志分析**:收集PB崩溃时产生的错误日志,根据日志信息定位问题所在。 7. **论坛求助**:如果问题复杂,可以...

    PB9插入OLE INSERT CONTROL 控件非法解决方法

    在PowerBuilder 9(PB9)开发过程中,用户可能会遇到“OLE INSERT CONTROL 控件非法”的错误提示,这通常是由于某些OLE控件注册失效或者环境配置不当导致的问题。本文将详细介绍如何解决PB9中OLE INSERT CONTROL控件...

    OLE控件注册修改工具

    在PB里添加控件里面添加OLE控件时,当点击到第三标签程序直接崩溃 系统用久了,各种安装和卸载操作,造成系统里的某些dll关联错误,powerbuer9.插入ole时就会出错,严重影响了使用,今天写了一个程序,用于检查哪个...

    解决PB中插入OLE控件的错误(insert of ole failed,license file required)

    在使用PowerBuilder (PB) 开发应用程序时,有时会遇到插入OLE控件时出现错误的情况。这个特定的错误信息——"insert of ole failed, license file required"——表明系统在尝试插入或激活一个OCX(ActiveX)控件时,...

    PB调用barcodex控件打印条码案例源码

    1. **安装和注册Barcodex控件**:首先,你需要下载并安装Barcodex控件的库文件,然后在PB环境中注册该控件。这通常涉及到将控件的动态链接库(DLL)文件添加到PB的系统路径,或者在PB的“ActiveX”设置中手动注册。 ...

    pb dw to execl文件导入dw数据窗口,不依赖 ole控件.zip

    // 函数功能:execl文件导入dw数据窗口,不依赖execl的ole控件 * // //参数: dw 是导入的数据窗口 // begin_row 是导入窗口数据的开始行 // begint_col是导入窗口数据的开始列 // end_col是导入窗口数据的结束列 //...

    Powerbuiler中用OLE控件使用WORD文档

    本文主要介绍了在 PowerBuilder(PB)程序中利用 OLE 控件使用 WORD 文档的方法,该方法可以极大地丰富 PB 程序的功能。通过使用 WORD 文档,用户可以自由地修改报表的格式,并且可以设计打印报表的程序。 在 PB 中...

    PB9.0 日期控件集合

    在PowerBuilder 9.0(PB9.0)开发环境中,日期控件是不可或缺的元素,主要用于用户界面中输入和显示日期。这个“PB9.0 日期控件集合”包含4个不同的日期选择组件,旨在提供多样化的日期处理功能,以满足不同项目的...

    pb11.5中调用 Microsoft WEB 浏览器 控件

    在PB中,你可以通过创建一个OLE容器对象来承载这个控件。步骤如下: 1. **添加OLE容器对象**:在PowerBuilder的窗口或对话框对象中,从对象库选择“OLE Container”并将其拖放到设计区域。 2. **初始化OLE容器**:...

    浏览器控件如何在PB中调用

    PowerBuilder提供了强大的OLE控件支持,使得我们可以轻松地将微软的Web浏览器控件集成到我们的应用中。 #### 二、PowerBuilder中调用浏览器控件的步骤 1. **添加OLE控件** - 在PowerBuilder中打开你想要添加...

Global site tag (gtag.js) - Google Analytics