2010-12-15 47 views
2

Je suis en train de créer un complément Outlook qui expose un volet de tâches personnalisé. A partir de ce volet sur certaines actions de l'utilisateur,Le contrôle Webbrowser ne reçoit pas les clés Tab/Delete/Back lorsqu'elles sont placées dans le complément Outlook

  1. créer un nouveau UserControl (qui a un contrôle WebBrowser à l'intérieur)
  2. Get attente de la fenêtre des messages Outlook (en utilisant l'API Win FindWindow ("de rctrl_renwnd32" ...))
  3. redimensionnez la fenêtre des messages à 0 largeur
  4. Réglez le parent de mon UserControl à la fenêtre principale de l'explorateur Outlook (en utilisant Win API User32.SetParent)
  5. Définissez la taille de mon UserControl pour occuper la place de la fenêtre des messages

Tout est bon, sauf pour le fait qu'Outlook supprime les touches Supprimer/Retour/Tabulation (et je suis sûr qu'il y en a plus), de la transmission au contrôle.

A l'intérieur de ce UserControl, je lance un site interne qui nécessite que l'utilisateur se connecte. Le WebBrowser accepte les entrées régulières, mais ne fait rien lorsque les touches Tab/Delete/Back sont enfoncées!

Je suis à bout de nerfs! J'ai cherché sur le net pendant quelques semaines maintenant et ne semble pas savoir ce qui se passe.

Est-ce que quelqu'un sait ce qui se passe ici et comment le réparer? J'ai mis en place un crochet de clavier de bas niveau et suis capable de piéger les clés requises. J'ai essayé d'employer User32.PostMessage mais toujours pas de chance.

Merci, Harsha

p.s .: Je viens d'un milieu Java et donc je suis un peu d'un novice en matière de .NET & P/Invoke.

Répondre

2

Le contrôle WebBrowser répond au message WM_GETDLGCODE avec DLGC_WANTARROWS | DLGC_WANTCHARS. C'est pourquoi il ne gérera pas certaines touches telles que Tab, Back et Delete. Il a dit au parent de ne pas manipuler ces clés.

Vous pouvez écrire un hook Windows puis appeler l'implémentation IOleInPlaceActiveObject :: TranslateAccelerator du contrôle webbrowser.

Vérifiez "WebBrowser Keystroke Problems" par Scott Roberts, Microsoft Internet Developer Avril 1999 pour plus de détails.

+0

Salut Sheng, je vais enquêter plus loin. J'avais essayé les options précédentes d'installer ma propre boucle de message et cela n'a pas fonctionné tout à fait non plus. Je vais confirmer à propos de la question dans les deux prochaines semaines. Vraiment apprécier votre réponse. –