前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

在PB中使用OCX控件遇到的问题_不潜水_新浪博客 加载中… 星期五打开水的BLOG http://blog.sina.com.cn/ctgu420 [订阅][手机订阅] 首页 博文目录 图片 关于我 个人资料 不潜水 Qing 微博 加好友 发纸条 写留言 加关注 博客等级: 博客积分:266 博客访问:15,701 关注人气:1 天天美食 精彩图文 相关博文 更多>> 推荐博文 普京缘何新年连出“意外之举” 关健斌 《人間有愛的證據》 梁詠琪 关于《私人订制》 谭飞 白宫曝光的奥巴马工作私密照是些 乔磊看天下 亚洲的“2014年问题” 徐静波博客 “不吸烟会死吗” 鄢烈山 风青杨:公务员真的越来越不好当 风青杨V 一人一票 闾丘露薇 肖鹰:冯小刚已经才尽艺绝 肖鹰 王学进:记者“偶遇”书记为何无 王学进 查看更多>> 谁看过这篇博文 加载中… 正文 字体大小:大 中 小 在PB中使用OCX控件遇到的问题 (2010-11-23 10:12:50)转载▼ 标签: 杂谈 最近在为高深商的JD-2000系列来电管理器编写PB的使用实例,期间遇到了不少有关ActiveX控件在PB中的各种现象,先把我的经历写下来,希望对大家有所 启发。 关于OCX控件:这是一个专为高深商公司专为JD-2000系列来电管理器编写的,用于电话的来电显示、电话拨号、电话录音、语音播放以及电话按键的检测, 是实现电脑与电话连接的重要中间控件。在它的内部已经处理了与硬件的连接,它可以自动查找连接到电脑的所有来电设备,并保存它们的设置;而不必关心它 们连接在那一个端口、通讯的协议怎样、有几个设备等等。 要实现录音功能只要将控件设为相应的录音状态,它会按你的要求自动生成录音文件(wav),放到你 指定的位置。生成的文件可以使用目前大多数的媒体播放器播放,当然包括Windows自带的媒体播放器。需要播音时只要把录音文件的文件名交给控件,它就会在 你指定的线路上播出录音文件。不管哪一条线路有来电进来,控件都会以事件发生的形式通知你。当然电话振铃、摘机、挂机、按键等也会以事件发生的形式通 知你。 本文的重点不在控件的功能,而是在它在PB中使用时的各种有趣的现象。我们知道,很早版本的PowerBuilder 就开始支持ActiveX控件了通常的使用方法是 1、先注册OCX控件,使用的办法是在命令窗口 输入 regsvr32.exe path\JDcomport.ocx 其中path是JDComport.ocx所在的路径,在这个路径下还应该包含一个控件要用到的动态链接库 qtintf.dll 2、在你的窗体里加入JDComponent控件: 方法是:在系统菜单选择Insert 选择 Control子菜单 选择 OLE... 进入 Insert Object 窗口 在Insert Object 窗口选择 Insert Control页 在Insert Control页 找到 JDComponent Control 并把它放到窗体上即可。 在大多数情况下,你应该是很顺利的,如果我也是这么顺利的话,也就不会有本文了,很不幸的是我到不了这一步,就在第2步的时候PB就发生了灾难性错误 ,整个退出了。具体的情况是当我在Insert Object 窗口选择 Insert Control页是 系统提示 Out of Memory 选择 取消 系统退出。一开始我也怀疑是高深商的 JD-2000系列来电管理器的OCX控件的问题,将这个问题反映给他们的工程师,他们的工程师也很快对他们的控件进行了检测,也找不出什么问题来。这个控件在 其它编程工具里用的很好,并没有这种情况的发生。于是用google进行了搜索真还找到不少关于这个问题的文章和帖子。总结下来不外是: 1 这是PB的一个BUG 2 这是安装了某些与pb不兼容的软件 3 PB的兼容性不好 解决办法: 1 用比较高版本的PB 或者使用补丁 2 卸载某些软件 3 使用注册表清理工具清理注册表和实效软件 4 重装系统 以上办法部分或全部多是行得通的。为了得到出现问题的真正原因,我进行了一次实验,这个实验室是这样的: 1 安装一个纯的操作系统 这里用的是XP sp2,也就是出了操作系统和必要的驱动程序外什么也不安装。 2 安装pb6.5 3 注册控件 4 使用控件 用之前介绍的方法添加JDComponent控件,不会再有系统崩溃的现象出现,之后反复用PB7 PB8 PB9 PB10进行一样的测试,也不会出问题。由此可见,产生系 统崩溃的原因是由于某些OCX控件引起的。在其后的实验里进一步证明了这一点。在添加了控件的工程,回到有问题的操作系统时,正常使用这个控件是没有任何 问题的。我估计问题的产生是这样的,添加一个OLE控件到窗体时要打开 Insert Object窗口上的 Insert Control页,当这一页被激活时,系统试图去枚举所有 安装到系统的ActiveX控件,结果在尝试列出某个控件的某种属性时除了问题,导致了系统的崩溃。因此只你的应用程序没有用到有问题的控件就不会导致系统的 崩溃,而且也仅仅是发生在控件列表之时。在PB9.0后的版本里 System Tree 窗口有了Components的一页,我们通过这一页的目录树仍然可以使用我们添加 ActiveX控件到我们的程序里。 这个结果是否可以说PB就一点责任都没有吗?至少在我的电脑里PB10以上的版本就根本不会发生这样的问题,也许这就是PB的一个改进吧。 最后给个BP安装ActiveX控件的小结: 1、如果有得选择,最好用PB10以上的版本,9.0版本的也勉强可用 2、一定要用在9.0以下版本的,只好在一台干净的机器上添加上控件后再到你的机器里进编辑调试 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gaoykosen/archive/2009/08/11/4434303.aspx 分享: 喜欢 阅读┊ 评论 ┊ 收藏 ┊转载 ┊ 喜欢▼ ┊打印┊举报 已投稿到: 排行榜 圈子 加载中,请稍候...... 前一篇:拍照 后一篇:2011年04月11日 评论 重要提示:警惕虚假中奖信息 | [发评论] 评论加载中,请稍候... 发评论 | 登录名: 密码: 找回密码 注册 记住登录状态昵 称: 分享到微博 评论并转载此博文验证码: 请点击后输入验证码 收听验证码 匿名评论 发评论 以上网友发言只代表其个人观点,不代表新浪网的观点或立场。 < 前一篇拍照 后一篇 >2011年04月11日 新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正 新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑 Copyright &copy; 1996 - 2014 SINA Corporation, All Rights Reserved 新浪公司 版权所有