pb插入ole控件點擊insert control時pb應用程序自動關閉解決思路

一、方法一:

單擊pb環境system tree窗口,右擊邊第一個標籤頁,找到你想要的control控件拖到你的窗口上就OK了,如下圖所示:

二、方二:

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,並且用記事本打開

 

 

 

(三)在註冊表中找到"HKEY_CURRENT_USER/Software/Sybase/PowerBuilder/8.0/OLE Object Bitmaps/..."中的最後一個子項,比如爲“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,證明這個子項前的控件都是正確的。


 

(四)在用記事本打開CLSID.REG,並且搜索OLE Object Bitmaps最後一個子項比如爲:“0E59F1D5-1FBE-11D0-8FF2-00A0D10038BC”,一直往下查找,直到提示查找不到爲止,到此爲止,記事本以上的控件都是正確的。然後用關鍵字“ToolboxBitmap32”再往下搜索,找到第一個帶“ToolboxBitmap32”和“control”關鍵字後,如圖


證明這個出問題的控件爲”C:/windows/system32/aliedit/aliedit.dll”然後在命令提示符中輸入

 


進行對出問題的控件反註冊,如果提示反註冊成功,打開PB的OLE控件看是否報錯,如果還報錯返回步驟(三)循環查找。如果提示找不到路徑,則在“HKEY_CLASSES_ROOT/CLSID”把對應的整個子項刪除。一般只會有一兩個控件有衝突,不用擔心工作量會很大

(五)大功告成

 

 

發佈了93 篇原創文章 · 獲贊 9 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章