如何确保用户只按一次按键并禁用按键,这样价值不会增长?用户可以再次按下键,但不能按住键.thx
答案 0 :(得分:1)
WM_KEYDOWN消息将先前的密钥状态存储在SELECT *
FROM users
where user_id!='1' AND (fast_name LIKE '%asim%'
OR last_name LIKE '%asim%' OR CONCAT(fast_name,' ',last_name) LIKE '%asim%')
参数的第30位。如果您只想处理初始击键,则可以忽略设置此位的所有lParam
消息。
答案 1 :(得分:0)
处理WM_KEYDOWN而不是WM_CHAR
。
lParam的第30位表示先前的键状态。
答案 2 :(得分:0)
任何按下一次或多次的键,只会被按下(释放)一次...... 假设您的回调函数是
LRESULT CALLBACK KeyHookProc(int nCode, WPARAM wParam, LPARAM lParam)
为了过滤同一个键上的多个匹配并将其捕获为一个,您可以使用
if((nCode >= 0) && ((wParam == WM_KEYUP) || (wParam == WM_SYSKEYUP)))
{
KBDLLHOOKSTRUCT *kb = (KBDLLHOOKSTRUCT*)lParam;
其中kb->vkCode
将为您提供按下的键,您将获得此事件消息一次。
至于禁止用户多次敲击相同的键(或者足够长以生成2个或更多KEYDOWN事件,它取决于控制面板的键盘设置,因此最好只捕获多个键击中一次。