2009-06-18 71 views
2

我有一个窗口,我已放入另一个应用程序。在这种情况下,我有一个自定义应用程序,我注入到Outlook 2003窗口中。父窗口拦截加速器

我遇到了一个问题,在我的应用程序中按下退格键时,父窗口(本例中为Outlook)正在获取WM_COMMAND消息。从我有限的Win API体验中,这似乎表明父级认为退格键是一个加速器,并且在我的应用程序可以看到它之前正在处理它。

我正在尝试使用LoadAccelerators函数来尝试获取Outlook加速器表,但我不知道如何获取父窗口的表。

任何想法?

编辑: 这里是间谍++时,我打Backspace键输出:

WM_COMMAND wNotifyCode:1(从加速器发送)WID:1405

我发现我的文本框变得WM_KEYDOWN的时按退格键。下面是该消息的间谍++行:

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

感谢。

回答

0

您正在将代码注入Outlook进程?听起来有点邪恶......无论如何,加速器表实际上并不与窗户相关联。它们由应用程序的消息泵处理(请参阅TranslateAccelerator函数)。我会说你最好的选择是使用消息钩子。如果您看到一个针对您的窗口的删除按键消息,请将另一条私人消息发送到您的窗口并吃掉原始内容,以使Outlook无法看到它。

+0

曾经使用过Xobni?他们做同样的事情。 Outlook的API在2003年相当有限。2007年的情况有所不同。 感谢您的帮助,我会检查一下。 – Max 2009-06-18 21:15:18