PB实现自动判断并注册Dll/OCX控件

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下而后 阅读详情

如果在程序中使用了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,这个可以从注册表中查到,注册之前先判断一下是否已经注册,如果没有注册,则进行注册,举例如下:

str

pb 15个小技巧汇总 表达式中rgb(255,240,194)为浅黄色,rgb(255,254,249)为浅白色,rgb(247,247,239)为浅黄色。10 、//如何生成固定长度的前面加零的数字编号,例如:12生成"00012",1234生成"01234"。dw_1.setFilter("(name like '赵%') and (sex = 0)")可以利用Describe("column_name.width")是否为"!调用方法:shRunDefltBrowser("www.pdriver.com") 阅读详情

相关推荐

pb插入ole控件点击insert+control时自动关闭解决办法

也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLLOCX控件PB有冲突时,CLSID后面的DLLOCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。进行对出问题的控件注册,如果提示反注册成功,打开PB的OLE控件看是否报错,如果还报错返回步骤(三)循环查找。,再进入注册表看到的是最正确的。来注册会莫名的冲突,但是用。

悠闲饭团的博客 695

PB11.5创建DLL和调用示例_pb11添加新dll_PB11.5创建DLL和调用示例_

封装自定义方法,编译成DLL文件供外部调用

解决DLLRegisterServer调用失败的问题

通常情况下,32位系统上的DLL应该注册到HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run中,64位系统上的DLL应该注册到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run中。首先,确保您正在调用的DLL文件的路径是正确的,且该文件存在于指定路径中。在这种情况下,您需要确保所有必需的依赖项已正确安装,且与DLL兼容。

ByteGlide的博客 1万+

自动注册数据源PB源码

PB源码,自动注册数据源。PB源码,自动注册数据源。PB源码,自动注册数据源。

【powerbuilder】PB调用C#编写的Dll类库

在c# 中编写com组件,供PB调用实例 前言:c#中写的dll直接是不能被pb调用的,只有写成com组件才可以调用,所以用c#写dll时要注意。 c#中新建类库   类库类型为通用类库,项目名为AddCom 1、配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“应用程序”->“程序集信息”,勾选“使程序集COM可见”,然后点击“生成”,选择“为COM互操作注册” 2、...

qq_25285531的博客 1572

pb8使用代码注册C#编写的dll

//使用regasm命令注册unzipfile.dll int li_ret li_ret = run("regasm unzipfile.dll /tlb:unzipfile.tlb",minimized!) if li_ret<>1 then messagebox('','unzipfile.dll注册失败!') return end ifoleobject unzip unzip = c

kennyzjk的专栏 1097

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

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

<br /><br />1、问题现象:当在powerbuilder中插入OLE控件点击insert control时,应用程序自动关闭,如图<br /><br /><br /><br /><br /><br />在网上查询时有人说是其他ocx(如金山,超星)冲突而导致的,毕竟现在的软件很多很多,怎么知道是那个软件冲突造成的呢?<br />2、原理分析<br />当我们点击OLE控件中的insert control时,pb会搜索那些控件可用,且在PB中显示出来。<br />PB搜索控件的位置为:注册表中的"

2万+

在DELPHI程序中注册OLE/COM控件

在DELPHI程序中注册OLE/COM控件       在用DELPHI编写程序时,充分利用他人的成果无疑是一条捷径。我们用的控件有的是带源码     的PAS文件,有的是DCU/OBJ文件;而OLE/COM控件也是不可缺少的,由于OLE/COM     控件不仅可以由DELPHI开发,还可由VB、VC、PB等其它编程语言开发,因而它可以使我们的     DELPHI应用程序功能更为强大,例如用一

dainiao01的专栏 2302

解决 pb插入ole控件点击insert control时关闭他PB插入OCX控件程序崩溃问题

PB里添加控件里面添加OLE控件时,当点击到第二标签或者第三标签程序直接崩溃 解决办法: 在运行里输入CMD ,进入DOS状态下,输入如下命令,可以批量注册*.DLL,*.ocx。 For %c in (c:\windows\system32\*.dll) do regsvr32.exe /s %c For %c in (c:\windows\system32\*.ocx)

大海的专栏 8655

PowerBuilder/PB常用备忘

记录PB相关的知识点和备忘,以备不时之需,同时也可共Pber们参考使用

Zhaof_Notes 2690

Powerbuilder PB插入ole控件点击insert control时关闭

解析:pb在搜索注册表里面已经注册ocx时,如果信息不对称,好像就出现崩溃问题。之前其他答案也有手搓注册表去找问题的。那是高手行为,我表示无能为力。之前搜到一个资料说的aliedit.dll的问题。的确在我们电脑上非常高的频率安装ali。就是xp里面无此问题。可以进去xp里面插入这个控件,再把代码拿到win7里面开发。在运行里输入CMD ,进入DOS状态下,输入如下命令,可以批量注册*.DLL,*.ocx。但,我在虚拟机里面安装的win7也出现这个问题。电脑里面没有ali的dll。另外一个途径很好用!

chengg0769 平淡无奇见真知 独立博客: http://blog.mis2erp.com 771

PB9.0调用C#编译的DLL文件

PB9.0调用C#编译的DLL文件 PowerBuilder9.0是一个比较老的语言,在对接第三方程序的情况下,存在不小的缺陷。为了方便实现跟第三方的接口对接,想了个折中的办法,采用PB调用.NET编译好的dll。 一、DLL文件生成 必须以管理员身份运行vs,否则在最后生成解决方案的时候无法通过。 其次,在新增C#项目的时候.NET框架一定要记得选择3.5,太高了不行,这点很重要。 .NET框架一定要记得选择3.5,这点很重要 在项目中新建个类文件,然后在文件上面,类似下图 [ComVi

qq_30207815的博客 2494

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函数,可以用此函

builderwfy的专栏 1551

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

如果在程序中使用了OCX控件,在开发阶段,可以使用Windows的程序来注册这个控件,如:regsvr32 ccrpftv6.ocxregsvr32 filevw61.ocx如果取消注册的话:regsvr32 /u ccrpftv6.ocxregsvr32 /u filevw61.ocx但是,如果程序写好了,要将其发布出去,不可能让用户自己去运行这个命令,那么怎么办呢?办法有很多,其中之一是在安装

kingworld的专栏 8838

彻底解决 PowerBuilder9.0打开OLE控件页崩溃的问题

使用powerbuilder9.0时,insert coltrol ->ole时,PB崩溃了,今天又遇到这个问题了。原因不知道是安装了哪个软件引起来的。 分析了原因: 1.PB检索注册表:HKEY_CLASSES_ROOT_CSLID下面的带control类型的控件 2.提取这个控件用于显示的图标数据,保存到HKEY_CURRENT_USER\Software\Sybase\PowerBuilder\9.0\OLE Object Bitmaps这个注册表下面。 问题来了:如果这个图标提取失败了

自学C++,会写HelloWorld 2193
上一篇: PB中如何设置OLE对象中结构类型的属性(转)
下一篇: VS2008经常使用的一些小技巧
Luckeryin
博客等级 码龄20年 151粉丝 172原创
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值