باستخدام ImageList من تطبيق VB6 يسبب تحطم على ويندوز 7.0 64 بت

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

سؤال

ولدي تطبيق VB6 القديمة التي تستخدم عنصر تحكم ImageList من COMCTL32.OCX ( "الضوابط العامة ل Microsoft Windows 5.0 (SP2)") لتوفير رموز TreeViews وListViews.

والتطبيق لن حتى إطلاق ويندوز 7.0 64 بت. الدقيقة فإنه يحاول تحميل النموذج الذي يحتوي على ImageList في ذلك، فإنه تعطل (حسنا، في الواقع، التطبيق الغمزات بها، تخرج دون أن يترك أثرا).

وإزالة ImageList من شكل يحل المشكلة.

وأي أفكار؟

هل كانت مفيدة؟

المحلول

وأنا حل هذه المشكلة عن طريق استبدال كافة مثيلات COMCTL32.OCX، الذي جاء مع VB5، مع MSCOMCTL.OCX، الذي جاء مع VB6.

مايكروسوفت KB المادة 190952 ديه تعليمات للقيام بذلك. وكان الى حد كبير مجرد العالمي للبحث وتحل محل العملية.

نصائح أخرى

وعن الخلل إلى Microsoft. وقت التشغيل VB6 هو لا تزال معتمدة على 64 بت ويندوز 7. COMCTL32 لم يتم تثبيت .OCX مع ويندوز 7، وإنما هو المدرجة صراحة كما معتمدة على ويندوز 7.

والحل الخاص بك على ما يرام. لكن COMCTL32.OCX يجب أن تعمل بشكل جيد على أي حال Win64 (فيستا أو 7).

ومجرد نصيحة صغيرة:

إذا باستخدام MSCOMCTL.OCX أنك لن تكون قادرة على تطبيق لlistview أو تريفيف أسلوب XP / Vista / 7 والتطبيق قد تبدو غريبة. واضح لا يكون لها أي تأثير على الضوابط MSCOMCTL.OCX.

ووالحل سيكون لفئة فرعية الضوابط MSCOMCTL.OCX، ونظرا لأنها لا تزال تحتوي على رأس COMCTL32.DLL هل يمكن التلاعب كيف يرسم.

و(سوف لقد نشرت كتعليق، ولكن ما زلت لا يمكن)

فمن الممكن أنك الوقوع في مشكلة مع حماية تنفيذ البيانات (DEP). اختبار بها عن طريق تعطيل DEP:

bcdedit.exe /set {current} nx AlwaysOff

وإعادة التشغيل بعد دخول أعلاه في سطر الأوامر. تذكر أن تشغيله مرة أخرى كما انها ما يعادل تشغيل ويندوز مع ملابسك أسفل.

وتحرير: الأمر أعلاه يعمل على ويندوز فيستا. لم أحاول ذلك على ويندوز 7.

وهناك قرص DEP أقل حدة هو الذهاب إلى الحوار أداء أجهزة الكمبيوتر (علامة التبويب متقدم من خصائص النظام) وإضافة إكس التطبيقات إلى قائمة الاستثناءات على علامة التبويب DEP.

وراجع للشغل، هل أنت متأكد من أن هذا لا ينتمي على serverfault.com. : P

scroll top