2010-09-07 41 views
5

簡單的問題,通常情況下,如果用戶按下Alt + Whatever且程序將產生MessageBeep,並且沒有與其關聯的熱鍵。我可以調用哪些API函數來避免這種情況?在無效的Syskeypress上禁用MessageBeep

處理WM_KEYDOWN,WM_KEYUP,WM_SYSKEYDOWN和WM_SYSKEYUP都返回0;在我的主WndProc不起作用。

回答

6

WM_MENUCHAR應該是你要找的。 MSDN搜索是你的朋友(>消息嘟嘟快捷鍵<或>消息嗶聲加速器<)。

http://msdn.microsoft.com/en-us/library/ms646349(VS.85).aspx

編輯:似乎只有主動菜單。
編輯2:作品像魅力。注意MSDN:

是處理此消息應返回以下值中的一個返回值的高位字的應用程序。

我用MNC_CLOSE << 16

+0

完美。非常感謝;否則我可能不會得到它。 – kaykun 2010-09-07 20:59:40

1

我認爲這是一個系統設置。控制面板+聲音+聲音選項卡。不知道哪一個這樣做,我有很多關閉它們。也許「程序錯誤」。

+0

這是一個局部問題的全局解決方案。有什麼辦法可以禁止程序發出導致程序錯誤聲音播放的消息嗎? – 2010-09-07 20:19:06

+0

是的,我可以看到第一句怎麼會有點誤導,但我想在我自己的程序中以編程方式禁用此MessageBeep。 – kaykun 2010-09-07 20:28:57

+1

不,程序不應該覆蓋用戶首選項。或者更直截了當地說,程序員不應該強制他的個人喜好在用戶身上。同樣的事情適用於像標題大小,字體,顏色,任務欄,屏幕分辨率等。如果有人打開了嗶嗶聲,通常是有原因的。也許是某種殘疾。你爲什麼打開它? – 2010-09-07 20:29:14