tagCANDY CGI VBレスキュー(花ちゃん) - VBレスキュー(花ちゃん)の投稿サンプル用掲示板 - Visual Basic 6.0 VB2005 VB2010
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
VBレスキュー(花ちゃん)の投稿サンプル用掲示板
     サンプル投稿用掲示板  VB2005 〜 用トップページ  VB6.0 用 トップページ
VB6.0 をWindows 7/8 上で使用した場合の不具合(VB6.0) ( No.4 )  [親スレッドへ]
日時: 2013/08/03 14:27
名前: Woodman

***********************************************************************************
* カテゴリー:[開発環境][][]  
* キーワード: 64bit,Mscomctl.ocx , , , ,  
***********************************************************************************
1 問題の所在
 VB6のソースコードをプロジェクトごとコピーして使うことはよくあります。しかし、WinXP/7の32bitから64bitへコピーして読み込もうとすると、次のエラーが出る場合があります。
「D:\XXXX\MSCOMCTL.OCXを読み込めません。--プロジェクトのロードを続けますか?」
 現在のところ把握しているOCXはMSCOMCTL.OCXだけですが、どうもこのOCXはバージョンの問題があるようです。
2 問題の個所
(1) 32bitでのvbpファイル
次のように記述されている箇所があります。 
 Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\system32\stdole2.tlb#OLE Automation
 Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0; MSCOMCTL.OCX
(2) 32bitのfrmファイル
 Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.1#0"; "MSCOMCTL.OCX"
3 対策
 かなり荒っぽいのですが、次のようにすると読み込める事が出来ました。
(1) 64bitでのvbpファイル
○「system32」を「SysWOW64」に変更する。 
 Reference=*\G{00020430-0000-0000-C000-000000000046}#2.0#0#C:\Windows\SysWOW64\stdole2.tlb#OLE Automation
○「#2.1#0」を「#2.0#0」に変更する。 
 Object={831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0; MSCOMCTL.OCX
(2) 64bitのfrmファイル
○「#2.1#0」を「#2.0#0」に変更する。 
 Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
4 この投稿について
 なぜ32bitと64bitでこのような現象になるのか原因はつかめていません。ただ、Win7(64bit)でVB6の新規プロジェクトを作ってMSCOMCTL.OCXのコンポーネントを追加すると、前項(1)と(2)のようにファイルが作られるのでそれに倣ったらロードできたということです。
 仮に本投稿と異なって書いた場合、「ヘッダーが読めません。」などというエラーが出て先に進めないだけでした。
 Formが多数あったり、頻繁に32bitと64bit間をコピーする場合があるので、上記ファイルの問題箇所を変更するプログラムで相当数テストしましたが、ファイルなどが破壊されるなどの障害はありませんでした。ただし、あくまでも自己責任でお願いします。



 [スレッド一覧へ] [親スレッドへ]