Подтвердить что ты не робот

"Метод '~' объекта '~' не удался при запуске VB6 IDE

Я заметил, что примерно каждый третий раз я запускаю VB6 IDE, появляется сообщение со следующим сообщением об ошибке: -

Method '~' of object '~' failed

Это не происходит ни для какого конкретного проекта, ни для чего-то другого, что я заметил. Кажется, что это не вызывает никаких проблем после отклонения сообщения. Мой вопрос: должен ли я беспокоиться об этом, и если да, что мне делать с этим.

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

4b9b3361

Ответ 1

Я иногда сталкивался с этой ошибкой и, в моем случае, был вызван надстройкой надстройки Visual Source Safe (плохая установка, я думаю, переустановка исправила проблему). Это никогда не вызывало проблемы; это было просто беспокойство. Как сказал Джон в комментариях, я бы попытался отключить надстройки, чтобы проверить, устраняет ли это проблему. Другое дело - убедиться, что вы используете Service Pack 6.

Ответ 2

Это обычно вызвано заблокированным буфером обмена на локальной машине. Надстройки VB6 IDE используют буфер обмена для копирования/вставки значков на панели инструментов, потому что API-интерфейс надстройки не предоставляет другого способа размещения изображения.

Обычно клиент удаленного рабочего стола (mstsc.exe) является виновником заблокированного буфера обмена. Способ, которым Microsoft реализовал передачу в удаленный буфер обмена, - это локальный буфер обмена для доступных форматов, которые блокируют его на некоторое время. Буфер обмена - это ужасно разработанный глобальный ресурс, к которому может одновременно обращаться один процесс, а OpenClipboard API не работает в пламени для других процессов, если ресурс в настоящее время недоступен.

Ответ 3

Я удалил Visual Studio 6.0, а затем снова установил его. Это очистило ошибку "Method" ~ "object" ~ "failed" для меня. Теперь мой VB 6 работает нормально. Я считаю, что в моем случае это связано с тем, что некоторые из COM-объектов не зарегистрированы должным образом. Моя новая машина получила призрак из моей старой коробки, на которой было VS.

Ответ 4

Я начал получать эту ошибку внезапно на обеих моих машинах разработки (один 32-разрядный, другой 64-разрядный). В моем поиске решения кто-то сделал тангенциальную ссылку на SourceSafe.

Ahh, тогда мне пришло в голову, что я недавно очистил проект (очистка файлов .bak и т.д.), и один из файлов, которые я очистил, был "MSSCCPRJ.SCC" (видя, как SourceSafe был - для нашей группы - далекой реликвии, я чувствовал себя "безопасным" удалением этого файла из папки проекта).

Короче говоря: восстановление файла "MSSCCPRJ.SCC" в папке проекта, устранена эта ошибка.

Ответ 5

Я просто столкнулся с этой ошибкой во время работы VB6 на Windows Server 2012 R2. Нарушением надстройки был Visual Component Manager 6.0. Как только я отключил это, среда IDE могла открыться без проблемы Method '~' of object '~' failed. Я не уверен, что это указывает на проблему установки или просто "старое" программное обеспечение на "современной" ОС.

Для всех, кто пытается установить VB6 на Windows 7, 8, 10, 2012 и т.д., вот несколько полезных ссылок:

http://www.fortypoundhead.com/newbrowseresults.asp?catid=34

http://it.toolbox.com/blogs/locutus/how-to-install-visual-studio-6-onto-windows-10-70155

Ответ 6

Я не знаю об этой конкретной ошибке, но у меня есть некоторая справочная информация об этом сообщении об ошибке.

COM определяет два уровня информации об ошибках. Все COM-методы и свойства имеют возвращаемое значение с типом HRESULT, где 0 (S_OK) указывает на успешность, а отрицательные значения указывают на ошибку. Кроме того, существует механизм предоставления так называемой "богатой информации об ошибках".

Если COM-объект генерирует большую информацию об ошибке, VB6 покажет предоставленную информацию. Если COM-объект возвращает отрицательное значение, но не предоставляет богатую информацию об ошибках, тогда VB6 показывает сообщение "Method" ~ 'объекта' ~ 'failed.

Существуют некоторые стандартные коды ошибок, такие как E_POINTER и E_NOTIMPL, которые часто возвращаются COM-объектами в С++. Все это приводит к сообщению "Метод" ~ "объекта" ~ "не удалось.

Если вы реализуете COM-объект на С++, мой совет - всегда генерировать важную информацию об ошибках. (В ATL вам просто нужно вызвать функцию Error.)