2009-06-18 7 views
2

J'ai une fenêtre que je l'ai placé dans une autre application. Dans ce cas, j'ai une application personnalisée que j'ai injectée dans une fenêtre Outlook 2003.fenêtre parent accélérateur interception

Je vais avoir un problème où la fenêtre parent (Outlook dans ce cas), reçoit des messages WM_COMMAND lorsque j'appuie sur la touche Retour arrière dans ma demande. De mon expérience limitée de l'API Win, cela semble indiquer que le parent pense que la touche de retour arrière est un accélérateur et le traite avant que mon application puisse le voir.

J'expérimente avec la fonction LoadAccelerators pour essayer d'obtenir Outlooks table d'accélérateurs, mais je ne sais pas comment je peux obtenir la table pour la fenêtre parent.

Des idées?

EDIT: Voici la sortie de l'espion ++ quand je frappe la touche Retour arrière:

WM_COMMAND wNotifyCode: 1 (envoyé à partir d'un accélérateur) wid: 1405

Je constate que mon champ de saisie se WM_KEYDOWN de quand la touche de retour arrière est enfoncée. Voici la ligne Spy ++ pour ce message:

P WM_KEYDOWN nVirtKey: VK_BACK cRepeat: 1 ScanOcde: 0EfExtended: 0fAltDown: 0fRepeat: 0fUp: 0

Merci.

Répondre

0

Vous vous injectez votre code dans le processus Outlook? Cela semble un peu néfaste ... Quoi qu'il en soit, les tables d'accélérateur ne sont pas réellement associées à une fenêtre. Ils sont gérés par la pompe de messages de l'application (voir la fonction TranslateAccelerator). Je dirais que votre meilleur pari est d'utiliser un crochet de message. Si vous voyez un message d'effacement ciblant votre fenêtre, publiez un autre message privé dans votre fenêtre et mangez l'original afin qu'Outlook ne le voit pas.

+0

jamais utilisé Xobni? Ils font la même chose. L'API pour Outlook est plutôt limitée pour 2003. 2007 est une histoire quelque peu différente. Merci pour l'aide, je vais vérifier cela. – Max

+0

Je dois admettre que c'est une façon assez commune d'intégrer dans Outlook. – 76mel

Questions connexes