Что означает "Метод" ~ 'объекта' ~ 'failed?
Я пытаюсь запустить устаревшее приложение VB6 на своем рабочем столе (у него нет пользовательского интерфейса, это приложение из командной строки), и когда я это делаю, я получаю окно с сообщением
Run-time error '4099':
Method '~' of object '~' failed
Это ничего не значит для меня; кто-нибудь имеет представление о том, что происходит не так?
Ответы
Ответ 1
Это может произойти, если поддержка библиотек (dlls или ocxs) не зарегистрирована должным образом или версии установленных библиотек различны (и несовместимы) с версией, которую приложение было скомпилировано ранее.
Убедитесь, что все зависимые библиотеки зарегистрированы и правильная версия.
Возможно, вам придется перекомпилировать приложение, чтобы оно работало с более новыми версиями поддерживающих библиотек.
Ответ 2
Это сообщение возникает, когда приложение Visual Basic 6 вызывает вызов COM-интерфейса, который выдает исключение (т.е. возвращает сбой HRESULT
). В этом случае VB6 переходит к обработчику исключений (как установлено On Error
). В обработчике исключения отображается объект Err
, который содержит сведения об исключении.
Если объект реализует ISupportErrorInfo
и фактически поддерживает информацию об ошибке, и он установил информацию об ошибке, то Err.Description
берет строку, содержащуюся в информации об ошибке, заданной объектом. В противном случае Err.Description
принимает строку Method ~ of ~ failed
.
IDK, делают ли другие версии VB то же самое; или если сообщение также установлено в других сценариях, кроме того, что я только что описал.
Ответ 3
У меня есть VB6 SP6, и я могу воспроизвести это поведение. В новом проекте введите этот код в форму. Проект работает нормально с F5. Щелкните правой кнопкой мыши проект и выберите "Опубликовать", а затем "Выполнить". Это генерирует сообщение об ошибке.
Option Explicit
Public Sub Init()
Dim blnErrorHandling As Boolean
If False Then
blnErrorHandling = True
Else
blnErrorHandling = False
End Sub
Теперь закомментируйте последние четыре строки:
Option Explicit
Public Sub Init()
Dim blnErrorHandling As Boolean
' If False Then
' blnErrorHandling = True
' Else
' blnErrorHandling = False
End Sub
Вы больше не получаете ошибку, и выходы строятся нормально. Я быстро добавлял некоторые ошибки обработки, чтобы найти источник аварии, и If False Then
является абсолютно допустимым. Контроллер MDAC сказал, что все в порядке, и перезагрузка не решила проблему.
Ответ 4
Другая причина может быть при использовании автоматизации, некорректной несоответствующей версии Office:
У меня есть устаревшее приложение VB5 + Access (которое я сейчас переписываю в Delphi и заменяю весь беспорядок автоматизации чистым поколением OpenDocument), который хорошо работает на некоторых системах и дал ошибку другим.
Эта ошибка произошла при создании электронной таблицы Excel и казалась безвредной (за исключением раздражения и, как это было бы в десятки раз, риск нажатия пользователем "Отменить" посередине), как будто всегда щелкает "Игнорировать", все работает как ожидается.
В итоге я обнаружил, что причиной было то, как был установлен Office 97:
Ошибка будет отображаться, если была установлена последовательность установки Office 97:
- Установочный компакт-диск Office 97 SR0
- применить патч SR1
- применить патч SR2
но не если он был установлен с помощью:
- Установочный компакт-диск Office 97 SR1
- применить патч SR2
Выполнение удаления/переустановки с установкой SR1 в затронутых системах решило проблему.
Ответ 5
Для программы VB6, которая запускается как приложение командной строки, после компиляции требуется дополнительный этап: необходимо, чтобы компоновщик VB6 выполнялся в исполняемом файле, чтобы установить его как консольную программу:
<VB6 dir>\LINK.EXE /EDIT /SUBSYSTEM:CONSOLE <program>.exe
В противном случае при запуске программы будет выдана ошибка Method '~' of object '~' failed
.
Ответ 6
Согласно моему опыту, это связано с версией Microsoft Access.
Моя программа была сделана в MS Office 2007 и установлена более новая версия MS Office. Вот почему эта ошибка появляется.
Ответ 7
У меня была эта проблема для времени.
Я искал ответ, и этот веб-сайт был Top of Search.
A Moment Ago.
Я удалил панель инструментов Office 2000
Удаленный Visual Basic 6 и удалены все, но не MSDN
Переустановил Visual Basic 6
Но я всегда делал программу My Logboard Logger в Visual Basic 6
и найдено, что была ошибка
Без этого выполнения я не получаю ошибку
Метод "~" Объект "~" Не удалось
При запуске Visual Basic 6 IDE
После запуска кода буфера обмена VB6 с помощью Ctrl F5
Начать с полной компиляции
и вылечить ошибки компиляции в коде
Но все еще с проблемой Загрузка VB6 IDE
До тех пор, пока я не поставлю - вариант явно через весь код буфера обмена
За исключением одного модуля, который был слишком большим для быстрого завершения
Но особенно в модуле класса
Что бы некоторые Undeclared Variables
и затем это вылеченное
Это личное решение и вклад в этот веб-журнал
Дополнительное обновление и редактирование здесь
После чтения 3 тем этого вопроса
Один из здесь о буфере обмена
fooobar.com/info/196902/...
и я снова заметил повторение теста снова
Как это мой код буфера обмена
и я был ранен в VB6 IDE. Использование буфера обмена при загрузке, особенно когда
Перенос буфера обмена в код
и я сделал код Перехват загрузки VB6 IDE растрового изображения
и верните то, что было раньше.
Теперь мне нужно быть более внимательным в своем коде и ждать, пока экран заставки закончится с помощью "Findwindow"
Думаю, я решил, что сейчас
У меня есть профессионально написанный исходный код ClipBoard, который я считаю использующим API
То, что я охотился и еще не использовал
Это кажется болью в моем коде, который я должен искать
For i = -30000 To 32000
i2 = Clipboard.GetFormat(i)
Next
Для проверки, если False
Для объекта ClipBoard-ed в конструкторе форм
Таким образом, они не подвергаются калекам или мешают моей программе кода.
Мой программный код ClipBoard - это единственная долгосрочная программа, которую я всегда запускаю
Для ClipBoards с интернет-страниц
и он берет/записывает клип с картинками Бит-карты скриншотов и вещей, хранящихся в файлах даты и времени
Я бы хотел узнать больше о том, как получить информацию о перетаскивании и обрезке
Надеюсь, что это поможет
2015 авг. 14 8 утра 9 утра