使用Windows消息查看按钮是否被按住

本文关键字:是否 按钮 Windows 消息 使用 | 更新日期: 2023-09-27 18:20:52

我有一个程序,它使用windows消息来知道按钮是否被点击:

IntPtr GetMsg(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            int vkCode = Marshal.ReadInt32(lParam);
            if ((Keys)vkCode == Keys.SomeKey)
            {
                /*Functions*/
            }
         }
     }

按钮可以在任何地方按下,程序仍将处理它们。

问题是,每当用户按下某个按钮时,该按钮的功能就会在短时间内重复很多次。即使这个功能没有那么重,它仍然会导致计算机在几秒钟内冻结或工作缓慢。

如果我知道按钮被按住了,我只需要做一次功能。

窗口信息中是否有标志或其他东西表明按钮被按住?

使用Windows消息查看按钮是否被按住

您可以监听WM_KEYUP事件,然后只执行函数,或者执行一次函数并锁定它,直到获得WM_KEYUP