如何在PB的程序中注册用到的OCX控件

PB实现自动判断并注册Dll/OCX控件 如果在程序中使用了OCX控件,在开发阶段,可以使用Windows的程序来注册这个控件,如: regsvr32 ccrpftv6.ocx regsvr32 filevw61.ocx 如果取消注册的话: regsvr32 /u ccrpftv6.ocx regsvr32 /u filevw61.ocx 但是,如果程序写好了,要将其发布出去,不可能让用户自己去运行这个命令,那么 阅读详情

如果在程序中使用了OCX控件,在开发阶段,可以使用Windows的程序来注册这个控件,如:
regsvr32 ccrpftv6.ocx
regsvr32 filevw61.ocx
如果取消注册的话:
regsvr32 /u ccrpftv6.ocx
regsvr32 /u filevw61.ocx

但是,如果程序写好了,要将其发布出去,不可能让用户自己去运行这个命令,那么怎么办呢?
办法有很多,其中之一是在安装程序(比如InstallShield)中来注册,另外一个办法就是在程序中自动进行注册。
此处,我们只讨论在程序中进行OCX注册的问题。

我们知道,OCX文件中都有一个接口DllRegisterServer,这个接口就是用来注册自身的,所以,问题变得非常简单,首先,声明一个外部函数:
Function long DllRegisterServer() Library "ccrpftv6.ocx"
然后在程序中进行调用:
DllRegisterServer()

但是,如果我们的程序中使用了多个OCX,而每个OCX的注册接口都是DllRegisterServer,怎么办呢?这个问题可以用alias关键字来解决,如:
Function long DllRegisterServer_ccrptv6() Library "ccrpftv6.ocx" alias for "DllRegisterServer"
Function long DllRegisterServer_filevw61() Library "filevw61.ocx" alias for "DllRegisterServer"
程序中这样调用:
DllRegisterServer_ccrptv6()
DllRegisterServer_filevw61()

当然,如果每次运行的时候都去注册,显然效率不高,我们的需求是只有当控件没有注册的时候进行注册,这样,我们需要知道控件的CLSID,这个可以从注册表中查到,注册之前先判断一下十分已经注册,如果没有注册,则进行注册,举例如下:

string ls_temp
integer li_ret
long ll_ret

li_ret = RegistryGet("HKEY_CLASSES_ROOT/CLSID/{19B7F2D6-1610-11D3-BF30-1AF820524153}/TypeLib", "", RegString!, ls_temp)//{19B7F2D6-1610-11D3-BF30-1AF820524153}是这个控件的CLSID
if li_ret = -1 then //如果返回-1,说明没有注册
 ll_ret = DllRegisterServer_ccrptv6()
end if

li_ret = RegistryGet("HKEY_CLASSES_ROOT/CLSID/{E67F7BE6-F682-4254-8CF4-3CCE1EEC0EA5}/TypeLib", "", RegString!, ls_temp)//{19B7F2D6-1610-11D3-BF30-1AF820524153}是这个控件的CLSID
if li_ret = -1 then //如果返回-1,说明没有注册
 ll_ret = DllRegisterServer_filevw61()
end if

powerbuilder调用dsoframer.ocx组件及操作 pb内嵌word组件及操作 首先下载dsoframer.ocx http://download.csdn.net/download/wolfalcon/9397898 解压后DsoFramer_KB311765_x86.exe直接安装是1.3版本。文件夹内.ocx文件是2.2版本。如需2.2版本可以将文件拷入32位系统c:\windows\system32下,64位系统c:\windows\syswow64下而后 阅读详情

相关推荐

PB用一个ocx控件实现的cool界面

pb powerbuilder 界面 PB用一个ocx控件实现的cool界面

BarcodeX(ActiveX打印控件) v5.3.0.80 免费版使用

下载 地址 :https://www.xiazaila.com/soft/39537.html 转载:https://www.xiazaila.com/soft/39537.htmlBarcodeX是一款active打印控件,软件可以识别所有类型的条形码,识别之后就可以导出为位图、元文件和到剪贴板等,一键打印出来,设置前台、背景颜色、条形码大小、条形码转换等,适用于所有的系统。BarcodeX(ActiveX打印控件) v5.3.0.80 免费版1、能工作于支持ActiveX的程序和开发环境如:Micros

weixin_53370274的博客 2352

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

PB调用barcodex控件打印条码案例源码,自己写的网上找不到的

IWebBrowser 完整缩略图

最近在写程序的时候,突然觉得google chrome的网页缩略照片挺好玩 ,  可是 chrome 是自己的内核, 自家的东西当然方便.WebBrowser 又怎么办?      首先想到的是最普通的屏幕复制, 也就是大家熟知的bitblt, 从WebBrowser的dc复制到bitmap的dc. 这种方法有很大的局限性: 1.要正确复制,必须保证WebBrowser在屏幕复制的时候必须处

cfy_yinwenhao的专栏 941

MFC在2024年的实用价值:从原理到实战的Windows GUI编程指南

Windows GUI编程是桌面应用开发的基础领域,其核心在于理解操作系统提供的原生API与消息驱动机制。MFC(Microsoft Foundation Classes)作为一套经典的C++类库,通过面向对象方式封装了底层的Win32 API,将窗口创建、消息处理、图形绘制等复杂操作抽象为CView、CDocument等类,显著降低了开发原生Windows应用的复杂度。这一技术价值在于它提供了对Windows生态的深度访问能力,尤其适合需要开发轻量、高效、无依赖原生工具的场景。在工业控制、金融、医疗等领域

weixin_30247781的博客 360

PB中使用OCX控件遇到的问题

    最近在为高深商的JD-2000系列来电管理器编写PB的使用实例,期间遇到了不少有关ActiveX控件PB中的各种现象,先把我的经历写下来,希望对大家有所启发。    关于OCX控件:这是一个专为高深商公司专为JD-2000系列来电管理器编写的,用于电话的来电显示、电话拨号、电话录音、语音播放以及电话按键的检测,是实现电脑与电话连接的重要中间控件。在它的内部已经处理了与硬件的连

gaoykosen的专栏 4255

winform使用Barcodex控件预览和打印一维码

1、控件下载。   http://files.cnblogs.com/files/masonblog/barcodex.zip 。   包含barcodex.ocx控件barcodex帮助文档、两个winform控件的dll文件。 2、控件注册。 (1)检测控件是否注册(方法不唯一)。   本例使用的是判断注册表中 HKEY_CLASSES_ROOT\TypeLib\ 是否包含bar...

weixin_30678821的博客 803

条码开发控件

barcodex.ocx MSBCODE9.OCX

PB串口通信,通过调用Mscomm32.ocx串口控件实现串口通信

PB串口通信,通过调用Mscomm32.ocx串口控件实现串口通信,PB串口通信,通过调用Mscomm32.ocx串口控件实现串口通信,PB串口通信,通过调用Mscomm32.ocx串口控件实现串口通信

ccrpftv6目录树控件1.0版(ccrpftv6.npk)-易语言

CCRP FolderTreeview Control (VB6)。 操作系统支持: Windows

BarcodeX ActiveX控件组态王条形码

BarcodeX ActiveX控件组态王条形码,这个控件已经实际应用过,网上下载的基本都用不了,但这个可以

Pb如何判断OCX控件是否注册?

OCX注册后(例:Regsvr32  pdfview.ocx)会在注册表中留下信息: HKEY_CLASSES_ROOT\CLSID\{433268D7-2CD4-43E6-AA24-2188672E7252}\TypeLib HKEY_CLASSES_ROOT\CLSID\{433268D7-2CD4-43E6-AA24-2188672E7252}\InprocServer32   64...

nhwatertao的博客 1591

C#注册OCX控件

1、注册方法(1)//声明注册方法[DllImport("C:\\Windows\\barcodex.ocx")]public static extern int DllRegisterServer();//注册时用//DLL注册int i = DllRegisterServer();if (i >= 0){ return true;}else{ return false;}(2...

weixin_30760895的博客 978

PB自动注册OCX控件

今天转了一些常用处理方法,经常用得到这些方法,自己以不想抄,只能COPY了。 方法一: 1.手工注册OCX控件 将该控件随程序一起发布,然后,将此文件拷到windows\system,或者直接放在本运行目录,然后执行dos命令,run( "regsvr32 *.ocx ") *表示具体的文件。然后写注册表,将控件注册标志置为1,在程序开始运行时,先检查该标志,是否需要进行注册 2.自动注册OCX控件OCX控件中一般都包含一个DLLRegisterServer函数,可以用此函数来实现O...

tlammon的专栏 757
上一篇: PB中如何设置OLE对象的结构类型的属性
下一篇: Thinking in Java第三版读书笔记-第四章:初始化与清理
kingworld
博客等级 码龄24年 2粉丝 11原创
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值