VB6.0畢竟是很古老的開發工具了,其對所使用的第三方組件依賴性比較強,例如在打開從其它電腦上拿來的VB6.0的軟件(系統)的工程文件(源代碼)時,經常會遇到"不能加載MSCOMCTL.OCX“的錯誤提示,如圖所示:
產生這種問題的可能性很多,例如目標電腦上MSCOMCTL.OCX組件的版本與開發該軟件的電腦上的該組件版本不一樣(可能性很大);目標電腦上沒有該組件;該組件文件已經被破壞或者是不可讀等。下面針對第一種可能性給出解決方案(如果是后面的幾種可能性,則還需要自己到網上下載或者是到原電腦上復制一個該組件的文件放在指定的文件夾下:32位操作系統放在.\Windows\System32文件夾下,64位操作系統放在.\Windows\SysWOW64文件夾下。然后同樣需要按照下面的方法來操作才可以)。
方法一:
在上面的對話框當中一定要點擊“是”!然后在下面的對話框當中點擊“確定”(該對話框就提示了使用MSCOMCTL.OCX組件的窗體名稱,如果后面還有類似的提示,一律點擊“確定”):
如果還遇到下面的提示框,一律點擊“確定”:
最后打開了工程(源代碼),我們可以看到使用了MSCOMCTL.OCX組件的窗體已經變成了這個模樣:
而正常情況下該窗體應該是這個模樣的(此處以可執行文件的運行截圖為例來對比):
由上面兩張圖對比可以知道,該窗體里面因為MSCOMCTL.OCX組件的加載錯誤問題,已經讓窗體的“工具欄”和“狀態欄”等控件都不見了,而再看VB6.0里面的“工具箱”處,發現很多組件的圖標都不見了:
這是因為該MSCOMCTL.OCX組件可以為VB6.0提供8種控件(上圖中多圈了一個組合框控件了),即:工具欄(Toolbar),狀態欄(StatusBar),圖像列表(ImageList),選項卡(TapStrip),進度條(ProgressBar),樹形框(TreeView),滑動塊(Slider),圖像組合框(ImageCombo),而打開源代碼的時候隨着MSCOMCTL.OCX組件的加載失敗,自然這些控件的圖標也就消失了,對應的窗體里面那些控件也都變成了空白的PictureBox了。
怎么解決這個問題呢?
首先在打開的VB6.0工程里面(即軟件的工程里面)一定要關閉所有添加了MSCOMCTL.OCX所提供的控件的窗體(包括代碼窗體),否則的話經過下面的步驟保存了以后,那些窗體里面所有之前出問題的控件就被空白的PictureBox替代了。
然后右鍵點擊“工具箱”的空白處,選擇“部件”,如圖所示:
在打開的窗體里面點擊“瀏覽”按鈕:
然后在打開的對話框里面“文件名”處輸入完整的“MSCOMCTL.OCX”(或者是輸入一部分后從下拉列表里面選擇):
然后點擊“打開”按鈕:
在返回的窗體里面點擊“確定”按鈕:
此時會發現“工具箱”內那些丟失的控件又“回來了”:
然后關閉VB6.0開發環境,在彈出的對話框里面選擇“是”:
然后在再開工程文件(源代碼)的時候,發現問題已經解決了,沒有再彈出加載組件錯誤的提示了!
方法二:
以上方法可以解決絕大多數系統環境下所遇到的加載MSCOMCTL.OCX錯誤的問題,尤其是當操作系統是Windows7或者XP的時候,可以說能百分之百的解決問題,但是當操作系統是Windows8(8.1)或者是Windows10的時候,如果在上述方法當中添加MSCOMCTL.OCX控件的時候遇到了卡死,或者是“訪問注冊表錯誤”等的提示,不能繼續使用上面的方法解決問題的時候,就需要使用下面的方法來解決問題了。
首先把已經打開的源代碼工程(VB6.0開發環境)關閉了(注意:關閉的時候千萬不要保存,也就是提示“保存文件的更改”那里一定要選擇“否”,否則的話那些出問題的窗體可能就會保存了出問題的狀態而無法挽回了)。
然后右鍵點擊后綴名為.vbp的工程文件,選擇“打開方式”,然后在打開方式的選項里面如果有“記事本”的話,則選擇此項,反之的話選擇“選擇默認程序(C)”這一項:
然后在打開的窗體里面選擇“記事本”,如圖所示(如果推薦的程序處沒有的話,就在“其他程序”下面尋找):
然后在上圖中去掉“始終使用選擇的程序打開這種文件”的鈎,然后點擊“確定”按鈕,這樣就使用記事本打開了該工程文件,然后點擊記事本當中的菜單項 編輯——查找:
在打開的“查找”對話框里面輸入“MSCOMCTL.OCX”,然后點擊“查找下一個”按鈕:
此時可以看到找到的內容左邊是“#2.1#0”的樣子:
把上面字符串里面的“2.1”修改為“2.0”,然后關閉文檔,保存,如圖所示:
然后再采用同樣的方法修改所有使用了MSCOMCTL.OCX組件提供的控件的窗體里面的內容:右鍵點擊相關的窗體frm文件,選擇“打開方式”——“記事本”(或者是沒有記事本選項的話,使用“選擇默認程序”指定記事本),如圖所示:
同樣采用記事本里面查找的方法找到“MSCOMCTL.OCX”所在的那一行文本:
此時看到其左邊的內容也是“#2.1#0”:
同樣把“2.1”修改為“2.0”,然后關閉記事本並保存:
然后再打開工程文件(源代碼)看看,這樣問題應該解決了,應該不會再彈出那個“不能加載MSCOMCTL.OCX”的提示了。
后續經驗:
①在Windows8(8.1)或者Windows10系統上打開VB6.0的源代碼的時候,經常會遇到彈出很多的錯誤提示的情況,除了上面所說的那個不能加載MSCOMCTL.OCX的錯誤提示之外,還可能有不能加載其它組件的錯誤提示,此時不用管它,一直點擊“確定”和“是”,等到完全打開了源代碼以后,再關閉了VB6.0軟件(千萬不要保存),然后再打開的時候可能就什么錯誤提示也沒有了,能全部打開了,所有的組件都正常了(這種情況我已經遇到了很多次,目前還不能解釋是什么原因)。
②如果采用了上面的兩種方法以后還是不能解決問題,建議:檢查在方法二當中,是不是把所有的使用到MSCOMCTL.OCX提供的控件的窗體使用記事本打開以后把里面的“2.1”都修改為“2.0”了?
③如果進行了上面的所有的操作,問題最終還是不能解決的話,或者是還有其它組件加載錯誤的提示的話,那多半是安裝的VB6.0有問題(或者是在VB6.0的安裝過程中被某些諸如360之類的殺毒軟件誤報阻止而導致很多組件安裝失敗),此時可以先下載一個VB6.0的SP6升級包安裝看看,如果問題依舊,或者是SP6升級包都安裝失敗了,那一定是安裝的VB6.0軟件有問題,卸載了以后重裝VB6.0軟件吧(而且通常安裝成功了SP6升級包以后可以解決很多除了MSCOMCTL.OCX之外的組件加載錯誤的問題),下面提供VB6.0的SP6升級包的下載地址(百度網盤):http://pan.baidu.com/s/1kTqgUJd
④有的時候很奇怪,剛開始打開源代碼的時候,除了提示MSCOMCTL.OCX加載錯誤之外,還有其它的很多組件加載錯誤的提示,但是解決了MSCOMCTL.OCX加載錯誤的問題以后,其它的組件加載錯誤的提示也跟着消失了(目前還不知道是什么原因)。
下面提供VB6.0軟件的安裝方法介紹:https://www.cnblogs.com/rewwensoftware/p/9563117.html
注:本博客內所有的文章均為原創,歡迎轉載,但轉載時請注明“瑞文軟件”的字樣,謝謝!