J'ai un petit problème avec mon application utilisant MSHTML. J'ai tout fonctionné excepté le comportement manquant de frappe impaire en tapant rapidement comme mentionné dans la ligne d'objet. Je pense que cela peut avoir à faire avec la méthode que j'utilise pour couler les événements?MSHTML IWebBrowser2 - L'enchaînement des événements de page provoque des frappes manqués?
Les détails: mon application est un programme distinct écrit en C++ et MFC dans Visual Studio 2005. Le programme attache à une instance (indépendante) en cours d'exécution d'Internet Explorer et obtient le pointeur à l'interface IWebBrowser2
et le transmet à un objet de type CCmdTarget
:
class CHandler : public CCmdTarget
{
IWebBrowser2* m_pWebBrowser2;
DWORD m_dwBrowserCookie;
…
DECLARE_DISPATCH_MAP()
};
Cette classe conserve la trace de ce qui se passe dans le navigateur. Je les événements de sombrer navigateur avec la commande suivante:
LPUNKNOWN pUnkSink = GetIDispatch(FALSE);
retval = AfxConnectionAdvise((LPUNKNOWN)m_pWebBrowser2, DIID_DWebBrowserEvents2, pUnkSink, FALSE, &m_dwBrowserCookie);
Si je commente le AfxConnectionAdvise
, aucune des séquences de touches ne sont pas saisies, mais pas d'autres événements. Si je le laisse dedans je couler les événements mais manquer la frappe occasionnelle si je tape rapidement.
Je sais qu'il existe un certain nombre de façons de se connecter aux événements (AtlAdvise
, points de connexion), mais c'était le seul que je pouvais travailler.
Toutes les suggestions seraient super!
Je ne pense pas que l'OP veut des frappes; Je pense qu'ils veulent des événements de webbrowser et veulent juste que les frappes au clavier fonctionnent sans laisser tomber des caractères. –
C'est vrai, je ne suis pas vraiment intéressé par les frappes. Mais lorsque vous tapez rapidement, certains sont abandonnés, ce qui est ennuyeux en tant qu'utilisateur. Je suis à peu près certain que c'est à cause de la façon dont je coule les événements, parce que ne pas les faire disparaître résout le problème. – Brian