Une application définie par l’utilisateur utilisant des filtres de messages peut cesser de répondre dans Windows 10, version 2004/20H2/21H1/21H2
Cet article vous aide à résoudre le problème lorsqu’une application utilisant ses propres filtres de messages cesse de répondre dans Windows 10.
S’applique à : Windows 10 version 2004, Windows 10 version 20H2, Windows 10 version 21H1 et Windows 10 version 21H2
Symptômes
Considérez le scénario dans lequel vous exécutez une application sur Windows 10, version 2004/20H2/21H1/21H2 et votre application utilise des filtres de messages. Dans ce scénario, l’application peut cesser de répondre.
Remarque
Ce problème n’est pas observé dans Windows 11.
Cause
Windows 10 ajoute les messages Windows utilisés par les systèmes de saisie de texte ou Text Services Framework (TSF).
Remarque
Windows 10, version 2004 a introduit la nouvelle version de TSF.
Si le filtre de messages de l’application supprime les messages Windows à l’aide de l’API PeekMessage
ou de l’API GetMessage
et ne transmet pas les messages à l’API DispatchMessage
, TSF ne peut pas terminer le traitement des messages et l’application peut cesser de répondre.
Ce problème peut se produire si l’application dispose d’un filtre de messages similaire à l’exemple suivant, qui distribue uniquement les messagesWM_LBUTTONUP
et supprime les autres messages.
while(::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&msg);
// Dispatch only specific messages.
if (msg.message == WM_LBUTTONUP) {
::DispatchMessage(&msg);
}
}
Solution de contournement 1
Modifiez le filtre de messages de manière à filtrer uniquement les messages requis et envoyer les autres messages via l’API DispatchMessage
.
while(::PeekMessage(&msg,NULL,0,0,PM_REMOVE))
{
::TranslateMessage(&msg);
if (msg.message == WM_LBUTTONDOWN) {
}
else {
// Dispatches all non-filtered messages
::DispatchMessage(&msg);
}
}
Solution de contournement 2
Activez le mode de compatibilité de Microsoft IME (Input Method Editor), si vous utilisez le nouveau Microsoft IME dans Windows 10.
Pour plus d’informations sur l’utilisation de la version précédente de Microsoft IME, consultez Revenir à une version précédente d’un IME (Input Method Editor).
Remarque
Nous vous recommandons d’utiliser le paramètre de compatibilité IME comme solution de contournement temporaire.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour