2013-12-22 9 views
20

Мне было предложено помочь кому-то работать с устаревшим приложением vb6, поэтому я решил бросить Visual Studio 6 на моем ноутбуке Windows 7 x64 после this guide.Visual Studio 6 Windows Common Controls 6.0 (sp6) Windows 7, 64 бит

Он установлен отлично, и я вижу, что все работает, за исключением Microsoft Windows Common Controls 6.0 (sp6). Microsoft Windows Common Controls-2 6.0 (sp6), Microsoft Windows Common Controls 5.0 (sp2) и т. Д. Все работает нормально. Однако, когда я пытаюсь добавить Microsoft Windows Common Controls 6.0 компонента (SP6), я получаю ошибку:

'' could not be loaded 

Я не мог добавить изображения, поэтому я загрузил снимок экрана, чтобы здесь для тех, кто хочет видеть это точно:

http://i.imgur.com/7aym4xB.png

Я попытался регистрации/отмены регистрации/перерегистрации MXCOMCTL.OCX, MSCOMCT2.OCX, msdatsrc.tlb все без успеха. Я также удалил известное обновление для системы безопасности, которое может вызвать проблемы с Windows Common Controls. Я удалил IE11, хотя состояние отчетов IE11 не вызовет проблем с MSCOMCTL.OCX, как это сделал IE10.

Я запускаю VB6.EXE в режиме совместимости Windows XP SP3. С помощью Отключить визуальные темы, Отключить композицию рабочего стола и Отключить масштабирование дисплея при высоких настройках DPI. Также запустите его как администратор.

Я также попытался открыть предыдущий проект, который использует этот контроль, и он терпит неудачу во время загрузки с тем же «пустой» ошибка как на скриншоте с нижеследующим в генерируемый журнал ошибок:

Line 35 : Класс MSComctlLib.ListView управления lvData не был загруженным классом управления. Строка 223: Класс MSComctlLib.StatusBar управления Stat не был загруженным классом управления.

Так что это говорит о том, что это не проблема с версией в .vbp, как некоторые предлагают (как это происходит и с новыми пустыми проектами).

Я нахожусь в конце. По-видимому, люди получили как VB6, так и Windows 7 x64 для правильной работы (с помощью Windows Common Controls), но НИЧЕГО Я не пытался решить мою проблему. Я надеюсь, что кто-то здесь может столкнуться с этим, или у вас есть идеи относительно того, что происходит.

+3

одна идея - это, вероятно, будет быстрее и менее болезненным, чтобы виртуализировать windows xp и начать снова ... – SteveChapman

+1

Я понял, что исправить это, я просто не могу опубликовать ответ на свой вопрос в течение 8 часов, потому что я am на новой учетной записи (забыли регистрационную информацию для моей старой). Я действительно не хотел запускать xp в vm, чтобы использовать только одно приложение ... вот почему я потратил столько времени, пытаясь найти исправление для этого. Спасибо за предложение. – Jay

+0

Я второй «запускаю xp в vm», я почти гарантирую, что вы будете рады, что в конце концов. –

ответ

39

В ожидании ответа на идеи здесь я решил попробовать что-то. Я запустил regedit как администратор, перешел к ключу HKEY_CLASSES_ROOT \ TypeLib, а затем выполнил поиск по «MSCOMCTL.OCX» ... Я удалил ключ EVERY, который ссылался на этот файл .ocx.

После поиска всего реестра, удалив найденное, я запустил командную строку в качестве администратора. Я тогда переходите к C: \ Windows \ SysWOW64 и напечатал следующие команды:

regsvr32 MSCOMCTL.OCX 
regtlib msdatsrc.tlb 

После регистрации эти два файла снова, все работает! Я прочесывал веб-сайт, чтобы ЧАСЫ искали это решение безрезультатно. Как бы то ни было, я исправил это сам после публикации вопроса здесь :(Даже если Visual Studio 6 устарел, надеюсь, это может помочь другим!

+3

Спасибо, ты, наверное, спас мне массу работы. Как и Loloy D ниже, я просто запускал команды без прохождения реестра. И вместо regtlib (который не был найден в моей системе) я использовал regtlibv12. Более поздняя версия включена в некоторые (некоторые) версии .NET Framework. – Herman

+0

Прошел этот вздор за прошлый час, пробежал по этому посту и решил мою проблему. Я должен был удалить его из реестра, чтобы это работало. У меня были проблемы с mscomctl.ocx и comctl32.ocx. незарегистрирование и перерегистрация не помогли, необходимо очистить от реестра. Спасибо, Джей! – sdouble

+3

FYI, вместо поиска в реестре и удаления ссылок на MSCOMCTL.OCX Я запускал 'regsvr32/u mscomctl.ocx' перед запуском двух команд в ответе Джея, и это сработало нормально для меня. Кроме того, я использовал regtlibv12 из каталога .net framework ('C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319') - поэтому в некоторых случаях он кажется незарегистрированным, работает достаточно хорошо (я на Win 7 32 бит, однако). –

11

Реализация двух директив, уже работающих для меня изнутри: C: \ Windows \ SysWOW64 "

regsvr32 MSCOMCTL.OCX 
regtlib msdatsrc.tlb 

Следует отметить, что поле DOS должно находиться в режиме администратора.До этого у меня все еще были ошибки в вене. «Класс MSComctlLib.TreeView управления tvTreeView не был загруженным классом управления» и «Класс MSComctlLib.ListView управления lvListView не был загруженным классом управления».

Я также использую Visual Studio 6 на 64-битной Windows 7 с обновлениями SP6. Из-за той же проблемы меня остановили. В моем случае мне не нужно было проходить через реестр.

+0

Нет проблем, рад, что другой человек нашел это полезным. – Jay

2

У меня была такая же проблема с загрузкой моего проекта VB 6. Вот пример сообщения об ошибке: «Класс MSComctlLib.ProgressBar управления prgExecution не был загруженным классом управления».

Эта проблема была решена с помощью Microsoft Magic следующим образом: я открыл окно «Компоненты проекта» в моем сломанном проекте. Я нажал кнопку Обзор и нашел файл MsComctl.ocx. Я нажал ОК. Затем VB 6 застрял (приложение не реагирует). Через некоторое время я закончил приложение VB 6, используя диспетчер задач.

Затем, когда я открыл свой проект VB 6, чтобы показать моему другу программирование, что такое POS-проект, все элементы управления были возвращены, как и ожидалось. Так или иначе, что-то было зарегистрировано или исправлено.

0

ПРОСТОЕ РЕШЕНИЕ

  1. Создайте новый проект и сохраните его
  2. с помощью блокнота откройте .VBP нового проекта и скопировать MSCOMCTL линию
  3. с помощью блокнота открыть файл .VBP из ваших проект
  4. заменить MSCOMCTL строку и сохранить его

СДЕЛАНО

удачи

0

У меня была проблема в результате чего VB6 IDE не будет загружать общие элементы управления (SP6) с VB6 установить на W7 64bit, в частности comctrl и msmask. Я пробовал все предлагаемые решения с помощью regsrv32 (повышен), редактировал реестр, менял номер версии в vbp и т. Д., Как это было предложено MS и другими. Все провалилось. Эти решения работали на моих других 2 PCS, но не на этом. В конце концов я удалил IE11, и после этого все работало правильно. IE10 никогда не был установлен на этом ПК - мы перешли от IE8 к IE11 и были вынуждены вернуться к использованию IE8.

Я должен сказать, что приведенное выше простое решение не касается проблемы, связанной с тем, что VB6 IDE не будет загружать общие элементы управления (используя меню «Компоненты» в разделе «Проект») - вы получаете сообщение об ошибке «Не загружаемый объект». Так что это произойдет (и я доказал это сам) в любом проекте, новом или старом, который пытается использовать тезисные общие элементы управления, которые не будут загружаться.

Итак, мое предложение всем, у кого возникла эта проблема, - попытаться выполнить регистрацию вручную с использованием маршрута regsrv32, а затем изменить vbp, чтобы изменить версию, и если они не удалили IE11 (и defintely IE10). Но это все равно не может быть 100% -ным решением, потому что, если ваши существующие файлы проекта «.vbp» содержат ссылки на неправильные общие элементы управления, вам необходимо исправить это вручную - здесь загружается новый проект, загружая компоненты, которые вам нужны в среде IDE , затем отредактируйте новое создание vbp с помощью блокнота и скопируйте номера версий для общих элементов управления в существующие файлы vbp.

0

=> только что сказал Джей, просто удалите те записи реестра, которые указывают на другие пути, отличные от c: \ windows \ system32. Это преступники ошибки. Я получил эти ошибки в своей IDE vb6 и после удаления эти аномальные записи в реестре проблема была исправлена. работает как шарм.

1

Только сегодня у меня была (сомнительное) удовольствие получить VB6 код, работающий на ОС Windows/64 бит. Я столкнулся с этой проблемой, но ни один из предлагаемых решений не работал для меня. Ни работали с добавлением ссылок, используя меню «Проект -> Ссылки ...».

Чтобы запустить его, мне пришлось вручную изменить файл проекта VB6 (* .vbp). Для всех библиотек, к которым у меня возникла проблема с загрузкой, я должен был использовать следующую нотацию для определения в качестве ссылки: Объект = {Ключ реестра} # Версия # 0; LIBRARY.OCX Пример: Объект = {FAEEE763-117E-101B-8933-08002B2F4F5A} # 1.1 # 0; DBLIST32.OCX

Мне не пришлось регистрировать ни одну из библиотек (используя regsvr32), все они были уже правильно зарегистрированы. Я думаю, почему мое решение работает, если используется нотация «object = {[...]» (вместо обозначения «Reference = * \ G {[...]»). В VB Studio используется только ключ реестра и уходит корнями в C: \ Windows \ SysWOW64, в то время как другой путь заканчивается поиском в C: \ Windows \ System32

Кстати, установлен IE11. Независимо от того, имеет ли это значение, может знать только Билл Г. Я предполагаю, что мое решение работает независимо от того, какой IE установлен. Возможно, вам просто нужно будет отменить регистрацию и зарегистрировать недостающие библиотеки, как указано в этом потоке.

Надеюсь, что это поможет любому, кто сталкивается с подобными проблемами.

0

Я полагаю, что это может быть связано с проблемой, в которой Microsoft выпустила обновление для MScomCtlLib, которое было неправильно исправлено Microsoft, что вызвало ошибки реестра.

Я считаю, что если вы будете следовать советам выложенных в:

https://support.microsoft.com/fr-fr/kb/2597986

+0

В идеале, шаги, которые необходимо решить, были бы в самом ответе, со ссылкой на источник для резервного копирования. на странице французского языка, возможно, это самый полезный формат для читателей этого сайта? – frumious

1

Я искал этот вопрос в течение нескольких часов и щелкнул в сотнях веб-сайтах, ни один из них не работал.

Мое окончательное решение:

  1. пробег: CMD
  2. кд с: \ Windows \ SysWOW64 (местонахождение к месту)
  3. regsvr32 MSCOMCTL.OCX

это решает первый один. Для второго:

  1. перспективе: CMD
  2. кд C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319
  3. regtlibv12 msdatsrc.tlb

сделано.

это может не работать для всех (с учетом версии системы причин, и т.д.)

0

я получаю тот же вопрос, но я получаю ошибку ниже ошибки при запуске regsvr32 MSCOMCTL.OCX

Модуль «MSCOMCTL.OCX ", но вызов DllRegisterServer завершился неудачно с кодом ошибки 0x8002801c.

Когда я запускаю CMD.EXE в качестве администратора, то он решил мою проблему.

Некоторое время VB6.EXE также нужно o запускать как администратор для доступа к какой-либо проблеме с реестром.

Удачи.