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

調用OLE控件如何註冊

阅读更多
  为了扩展应用程序的功能,许多系统都使用了或多或少的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);   endif;   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打开web ole控件

    3. **使用方法**:设置好OLE控件后,可以通过调用控件的`Navigate`方法加载指定的URL。例如: ```pb ole_control.Navigate("http://www.example.com") ``` 还可以监听`DataChanged`事件,以检测网页是否已加载...

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

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

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

    在 64 位系统下,PowerBuilder 搜索控件的位置为:注册表中的"HKEY_CLASSES_ROOT/CLSID"和“HKEY_CLASSES_ROOT/CLSID/Wow6432Node”下的子项(为 DLL、OCX 文件注册信息)。 解决思路: 1. 首先,我们需要找到冲突...

    SWT 使用 OLE 函数调用com控件的资料

    SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料SWT 使用 OLE 函数调用com控件的资料 SWT 使用 OLE 函数调用com控件的资料

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

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

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

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

    vc++如何调用labview中的控件

    从描述中可以看出,LabVIEW控件通过ActiveX技术提供,ActiveX是一种组件对象模型,允许软件组件在网络上进行交互,可以使用OCX(OLE Control Extension)文件注册ActiveX控件。VC++可以使用ActiveX控件,这是微软组件...

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

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

    c#调用ocx控件的方法

    ### C#调用OCX控件的方法 在C#中调用OCX控件是一种常见的技术,尤其是在需要利用已有组件功能的时候。本文将详细介绍如何在C#中注册、导入并使用OCX控件。 #### 一、注册OCX控件 在使用OCX控件之前,首先需要将其...

    HTML调用OCX控件

    三、网页测试与OCX控件注册 在网页上使用OCX控件前,必须确保控件已在用户的系统上正确注册。这通常通过在命令行运行`regsvr32`命令完成,例如: ``` regsvr32 path\to\ocx_file.ocx ``` 如果不再需要该控件,可以...

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

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

    控制台程序调用调用控件

    首先,理解OCX控件:OCX是Microsoft在其Visual Basic 3.0版本中引入的一种组件技术,它是ActiveX的一部分,可以看作是增强版的OLE控件。OCX控件可以在多种支持ActiveX的环境中使用,如VB、VC++、Delphi等,提供诸如...

    js调用ocx控件 响应回调

    本主题聚焦于如何在JavaScript中调用由VC6开发的OCX控件,并响应来自OCX控件的回调。这种技术允许Web页面与本地系统进行深度集成,实现丰富的功能。 首先,我们需要理解什么是OCX控件。OCX(OLE Control Extension...

    简单的Web调用OCX控件 v1

    描述中提到,"本程序简单描述ocx在网页中的调用方式",意味着它将涵盖创建、注册OCX控件,以及在HTML或JavaScript中引用和操作这些控件的基本步骤。对于Web开发者,特别是那些不熟悉COM和ActiveX技术的人来说,这是...

    jacob调用OCX控件总结

    这个错误通常是因为在Ole4.0之后,调用OCX控件的方法时,系统会检查是否允许调用。如果控件没有正确初始化或通过持久存储接口加载,COleControl.IsInvokeAllowed(DISPID)方法会返回FALSE,从而引发异常。解决这个...

    C++开发及调用.OCX文件

    OCX(旧称OLE控件)是基于COM(Component Object Model)的,它允许开发者创建小型、自包含的代码块,可以嵌入到其他应用程序中。OCX控件通常包含用户界面元素,如按钮、文本框等,也可以包含更复杂的功能,如数据库...

    PHP调用自制控件实现操作环境的转化.pdf

    控件的原理是基于 ActiveX 技术的,ActiveX 技术是 OLE 技术的发展,定义了一种可重用组件技术的规范。 在实现控件时,需要定义控件的属性和方法,并且定义控件可引发的事件。控件可以在容器中运行,因此从运行的...

    Richeditbox中调用OLE

    本篇将详细讲解如何在C#的`RichEditBox`中调用`OLE`来插入`ActiveX`对象。 首先,理解`ActiveX`是微软提出的一种技术,它允许开发者创建可以在不同Windows应用程序间共享的组件。这些组件可以是控件、服务、文档等...

    C#编写COM控件 Powerbuilder调用

    6. **PowerBuilder调用**:在PowerBuilder中,可以通过OLE容器控件来调用COM组件。首先,在PowerBuilder的数据窗口中添加一个OLE容器,然后在运行时动态创建和实例化COM控件,通过接口调用其方法,设置或获取属性值...

    MScomm控件注册工具

    除了MScomm控件,该工具还支持注册其他的OCX(OLE控件)文件,OCX是ActiveX控件的一种文件格式,包含了可重用的用户界面元素和控件。 注册OCX文件通常涉及到以下步骤: 1. 打开命令提示符,通常以管理员身份运行。 ...

Global site tag (gtag.js) - Google Analytics