if messagebox("提示","是否退出?", Question!, YesNo!) = 1 then
RETURN 0
else
return 1
end if
1、问题现象:当在powerbuilder中插入OLE控件点击insert control时,应用程序自动关闭,如图在网上查询时有人说是其他ocx(如金山,超星)冲突而导致的,毕竟现在的软件很多很多,怎么知道是那个软件冲突造成的呢?
2、原理分析
当我们点击OLE控件中的insert control时,pb会搜索那些控件可用,并且在PB中显示出来。
PB搜索控件的位置为:注册表中的"HKEY_CLASSES_ROOT/CLSID"下的子项(为DLL、OCX文件注册信息)
搜索到保存的位置在:"HKEY_CURRENT_USER/Software/Sybase/PowerBuilder/8.0/OLE Object Bitmaps/..."
也就是说pb搜索CLSID的子项保存在OLE Object Bitmaps中,当搜索CLSID中的DLL或OCX控件和PB有冲突时,CLSID后面的DLL、OCX控件就不会保存在OLE Object Bitmaps中,也就是说OLE Object Bitmaps没有完全加载所有控件,有的控件冲突导致中断使PB报错,找出冲突的控件是关键。
3、实战
(一)运行注册表
(二)在注册表中找到“HKEY_CLASSES_ROOT/CLSID”并导出保存为CLSID.REG,并且用记事本打开
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)