
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,并且用记事本打开
临时关闭:按Ctrl+Atl+Delete打开进程可以看到PnkBstrA.exe和PnkBstrB.exe这两个进程,点击后直接结束进程就可以。但是每次重启之后,上述两个进程会自动启动的。
永久关闭:
照上面方法 *** 作一次后,再直接到BF2的子文件夹里面,有个PB的文件夹,直接删除掉这个文件夹就可以了。
注:如果删除掉PB文件夹或者将PB文件移位,以后可能造成BF2不能正常游戏。一旦使用了上面2项方法,BF2就绝对玩不了网战。
好了!有问题再提吧!!!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)