2009-06-18 78 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