用C# 编写 winform 程序,注册了热键ESC,然后用WndProc 接受消息进行响应。
现象:当键盘按住ESC稍长时间,会重复触发设定的功能函数。
设想:如果可以只接受键盘的弹起消息,是不是可以避免重复触发。
问题:如何避免重复触发?如何判断消息为“按键弹起”
protected override void WndProc(ref Message m)
{
const int WM_HOTKEY = 0x0312;
switch (m.Msg)
{
case WM_HOTKEY:
switch (m.WParam.ToInt32())
{
case (int)EnumHotkey.ESC:
....