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?
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.
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.
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.
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.
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.
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.
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