Que signifie "méthode' ~ ' de l'objet '~' échoué"?

j'essaie d'exécuter une application VB6 legacy sur mon bureau (elle n'a pas d'interface utilisateur, étant une application en ligne de commande), et quand je le fais, je reçois une boîte de message disant

Run-time error '4099':

Method '~' of object '~' failed

Cela ne signifie rien pour moi; quelqu'un aurait-il une idée de ce qui va mal?

26
demandé sur MarkJ 2009-08-19 23:07:33

7 réponses

cela peut se produire lorsque les bibliothèques supportant (dlls ou ocxs) ne sont pas correctement enregistrées ou que les versions des bibliothèques installées sont différentes (et incompatibles) de la version sur laquelle l'application a été compilée à l'origine.

assurez-vous que toutes les bibliothèques dépendantes sont enregistrées et la version appropriée.

vous devrez peut-être recompiler l'application pour qu'elle fonctionne avec les nouvelles versions des bibliothèques de soutien.

14
répondu DJ. 2009-08-19 19:48:27

ce message se produit quand une application Visual Basic 6 fait un appel d'interface COM qui lance une exception (i.e. retourne un échec HRESULT). Dans ce cas, VB6 saute à un gestionnaire d'exception (défini par On Error). Dans le handler d'exception il y a un objet visible Err qui contient les détails de l'exception.

Si l'objet implémente ISupportErrorInfo, et il n'a effectivement erreur de prise en charge de l'info, et il a établi erreur d'infos, puis Err.Description prend la chaîne qui est dans l'erreur info définie par l'objet. Autrement,Err.Description prend la chaîne Method ~ of ~ failed.

IDK si d'autres versions de VB font la même chose; ou si le message est aussi défini dans d'autres scénarios que celui que je viens de décrire.

6
répondu M.M 2014-09-04 10:41:54

j'ai VB6 SP6 et je peux reproduire ce comportement. Dans un nouveau projet, mettez ce code dans une forme. Le projet fonctionne normalement avec F5. Cliquez avec le bouton droit de la souris sur le projet et sélectionnez Publier puis construire des résultats. Cela génère le message d'erreur.

Option Explicit

Public Sub Init()
    Dim blnErrorHandling As Boolean

    If False Then
        blnErrorHandling = True
    Else
        blnErrorHandling = False
End Sub

Maintenant commenter les quatre dernières lignes:

Option Explicit

Public Sub Init()
    Dim blnErrorHandling As Boolean

'    If False Then
'        blnErrorHandling = True
'    Else
'        blnErrorHandling = False
End Sub

Vous n'avez plus l'erreur et les sorties sont construit normalement. J'ai rapidement ajouté quelques erreurs de manipulation pour localiser la source d'un crash et If False Then est parfaitement valide. Le vérificateur de MDAC a dit que tout allait bien et qu'un redémarrage n'a pas résolu le problème.

2
répondu Brian Leeming 2011-05-06 14:57:35

une autre cause peut être lors de l'utilisation de l'automatisation, certains petits défauts de version du Bureau:

j'ai une application d'accès VB5+(que je suis en train de réécrire dans Delphi et de remplacer tous les problèmes d'automatisation par la génération d'OpenDocument propre) qui fonctionne bien sur certains systèmes et a donné l'erreur sur d'autres.

cette erreur se produirait lors de la production D'une feuille de calcul Excel, et semblait inoffensive (sauf la gêne et comme il montrerait une douzaine de fois le risque de l'utilisateur cliquez sur "Abandonner" au milieu) comme si en cliquant toujours sur "Ignorer" tout fonctionnait comme prévu.

j'ai finalement découvert que la cause était la façon dont le bureau 97 a été installé:

L'erreur apparaîtrait si la séquence de configuration D'Office 97 était:

  • Office 97 SR0 install CD
  • appliquer le patch SR1
  • appliquer le timbre SR2

mais pas si elle a été installée avec:

  • Office 97 SR-1 installer CD
  • appliquer le timbre SR2

faire une désinstallation / réinstallation avec la configuration SR1 sur les systèmes affectés a résolu le problème.

2
répondu Julien Marodon 2012-06-12 10:38:14

pour un programme VB6 qui est exécuté comme une application en ligne de commande, il y a une étape supplémentaire nécessaire après la compilation: le linker VB6 doit être exécuté sur l'exécutable pour le Définir comme un programme de console:

<VB6 dir>\LINK.EXE  /EDIT  /SUBSYSTEM:CONSOLE  <program>.exe

si vous ne le faites pas, vous obtiendrez le Method '~' of object '~' failed erreur lors de l'exécution du programme.

0
répondu yttyx 2015-08-21 10:01:01

D'après mon expérience, C'est dû à la version Microsoft Access.

mon programme a été réalisé dans MS Office 2007 et a installé une nouvelle version de MS Office. C'est pourquoi cette erreur apparaît.

0
répondu Sajjad 2017-12-12 10:07:08

j'ai eu ce problème pendant un moment.

j'ai cherché une réponse et cette page Web était en haut de la recherche.

Il Y A Un Moment.

j'ai désinstallé Office 2000 de la Barre d'outils

désinstallation de Visual Basic 6 et suppression de MSDN

Réinstaller Visual Basic 6

mais j'ai toujours eu mon programme D'enregistreur de bloc-notes en Visual Basic 6 était en cours d'exécution

et a Constaté Que c'Est L'Erreur

sans cette course Je ne Obtenez le message d'Erreur

méthode de "~" Objet " ~ " échec

lors du démarrage de Visual Basic 6 IDE

après avoir lancé le programme de code de presse VB6 avec Ctrl F5

Démarrer Avec La Compilation Complète

et guéri des erreurs de compilation dans le Code

mais toujours avec des problèmes de chargement VB6 IDE

Jusqu'À Ce Que Je Mette - Option Explicite À Travers Tout Le Code De Presse-Papiers

sauf un Module qui était trop grand pour être complet Rapidement

mais surtout dans le Module de classe

qui avait des Variables non déclarées

et Puis Qui guérissent

C'est Ma Solution Personnelle et leur Contribution à Ce Web Log

Une mise à Jour Supplémentaire et d'Éditer Ici

après avoir lu les 3 fils de ce sujet L'un de Ici sur le presse-papiers https://stackoverflow.com/a/8577499/5226365

et j'ai repéré le Bug de nouveau en Testing

Comme C'Est Mon Code De Bloc-Notes

et J'ai été ennuyé par VB6 IDE en utilisant le Presse-papiers à la charge surtout quand Porter un bloc-notes en Code

et j'ai fait le code intercepter la charge IDE VB6 D'une Bitmap et remettre ce qui était là Avant

maintenant je dois être plus attentionné dans mon Code et attendre que L'écran Splash se termine avec"Findwindow"

je Crois que j'ai résolu Maintenant

j'ai un écrit professionnel Le code source du presse-papiers qui, je pense, utilise L'API

que j'ai chassé et que je N'ai pas encore utilisé

Il Semble qu'une Douleur dans Mon Code Que je Recherche

For i = -30000 To 32000
    i2 =  Clipboard.GetFormat(i)
Next

Pour Tester Si False

pour presse-papiers-ed objet dans le concepteur de forme

pour qu'ils ne soient pas estropiés ou interfèrent avec mon programme de Code

mon code de programme de presse-papiers est le seul programme de longue durée qui reste que j'exécute toujours

pour les ClipBoards de la Pages Internet

et Il Faut / Logs Clip de Photos images de Captures d'écran et les Choses de Stocker la Date et l'Heure des Fichiers

je souhaite que j'en Savais Plus sur la Façon de se Glisser et de Déposer Info

Espérons Que Cette Aide

2015 14 Août de 8h à 9h

-4
répondu Matthew Lancaster 2015-08-14 08:30:38