2009-09-29 18 views
0

SendMessage renvoyant 0 et GetLastError renvoyant 2 (ERROR_FILE_NOT_FOUND). ERROR_ACCESS_DENIED est documenté mais pas ceci. Quelqu'un a-t-il une idée de ce que cela signifie?Que signifie ERROR_FILE_NOT_FOUND de SendMessage?

+0

dont SendMessage? Quelle est la documentation API à laquelle vous faites référence? Pouvez-vous coller un exemple de code? –

+0

Le message d'erreur dépend du message que vous envoyez. Quel est le message? – Gerald

+0

Vérifiez la valeur de GetLastError() avant d'appeler SendMessage, il est probable qu'il ait déjà cette valeur, donc vous voyez une erreur "périmée", pas quelque chose de défini par SendMessage lui-même. – BrendanMcK

Répondre

2

SendMessage retournant 0 n'indique pas et ne peut pas indiquer un échec. SendMessage renvoie simplement la valeur retournée par WindowProc qui est fréquemment 0. Il n'y a aucun moyen de dire - simplement via le retour de SendMessage - si SendMessage n'a pas pu livrer le message (peut-être parce que la fenêtre est invalide ou appartient à un processus de niveau d'intégrité supérieur).

Si le message est documenté comme renvoyant autre chose que 0, puis, selon le message, il peut être valide de regarder GetLastError() pour voir pourquoi le traitement du message a échoué. De plus, aucune fonction du système d'exploitation n'efface le dernier code d'erreur, donc toute valeur dans GetLastError() peut être entièrement accessoire. Appeler une API puis appeler GetLastError() peut signifier que l'erreur s'est produite lors d'un appel d'API précédent, OU que l'API appelée en interne a effectué une opération qui a échoué mais a été gérée et l'API a réussi.

+0

Cela signifie-t-il fondamentalement qu'il n'existe aucun moyen fiable de vérifier que l'API a échoué? –