我正在寻找一种方法来检测 Delphi 项目中按键按下的时间并警告用户。
我正在开发一个聊天程序,需要查看该人是否按住某个字母(例如 W 键)来向该聊天框发送垃圾邮件。我将给出在 Delphi 7 中尝试执行的示例:
//Looking up if key in use and held for lets say 20 seconds
if (GetAsyncKeyState(Byte(VkKeyScan('W'))) shl 20) <> 0 then
begin
ShowMessage('W Key Held down too long!');
end;
不过,我不确定 GetAsyncKeyState 是否会向我提供该信息。如果没有,什么会?
最佳答案
Windows 不会报告按住某个键的持续时间,仅报告按住的键会重复相同的 WM_KEY...
消息。您必须自己手动跟踪持续时间。当您检测到 wParam
位 30 设置为 1 的 WM_KEYDOWN
消息时,如果您尚未跟踪该键,请开始跟踪它并用它存储当前系统/刻度,否则获取当前系统/滴答时间,计算持续时间,并采取相应措施。当您收到 WM_KEYUP
消息时,如果您正在跟踪该按键,请停止跟踪该按键。
关于delphi - 如何检测按键被按下的时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12973296/