VB6アプリケーションからImageListを使用すると、Windows 7.0 64ビットでクラッシュする

StackOverflow https://stackoverflow.com/questions/1018942

質問

COMCTL32.OCXのImageListコントロール(" Microsoft Windows Common Controls 5.0(SP2)")を使用してTreeViewsとListViewsのアイコンを提供する古いVB6アプリケーションがあります。

アプリはWindows 7.0 64ビットでも起動しません。 ImageListのあるフォームをロードしようとすると、クラッシュします(実際、アプリはウィンクアウトし、トレースなしで終了します)。

ImageListをフォームから削除すると、問題が解決します。

アイデアはありますか

役に立ちましたか?

解決

VB5に付属のCOMCTL32.OCXのすべてのインスタンスをVB6に付属のMSCOMCTL.OCXに置き換えることにより、この問題を解決しました。

Microsoft KB記事 190952 にこれを行うための指示があります。それはほとんどグローバルな検索と置換の操作でした。

他のヒント

バグをマイクロソフトに報告してください。 VB6ランタイムは、64ビットWindows 7ではまだサポートされています。COMCTL32 .ocxはWindows 7ではインストールされませんが、明示的にリストされています Windows 7でサポートされています。

あなたの解決策は問題ありません。 ただし、COMCTL32.OCXはWin64(Vistaまたは7)で正常に動作するはずです。

ちょっとしたアドバイス:

MSCOMCTL.OCXを使用している場合、XP / Vista / 7スタイルのリストビューまたはツリービューに適用できず、アプリは異質に見える可能性があります。マニフェストはMSCOMCTL.OCXコントロールには影響しません。

回避策は、MSCOMCTL.OCXコントロールをサブクラス化することです。これらのコントロールにはまだCOMCTL32.DLLヘッダーが含まれているため、ペイント方法を操作できます。

(コメントとして投稿したいのですが、まだ投稿できません)

データ実行保護(DEP)の問題に直面している可能性があります。 DEPを無効にしてテストします:

bcdedit.exe /set {current} nx AlwaysOff

コマンドラインで上記を入力した後に再起動します。ズボンを下ろしてWindowsを実行するのと同じことを忘れないでください。

編集:上記のコマンドはVistaで機能します。 Windows 7では試していません。

比較的簡単なDEPの調整は、コンピューターのパフォーマンスダイアログ(システムプロパティの[詳細設定]タブ)に移動し、アプリのexeを[DEP]タブの例外のリストに追加します。

ところで、これはserverfault.comに属していません。 :P

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top