KeyPress捕捉按键时会先停顿一下再持续,如何判断键盘始终按下?

qq_33905362 2016-10-25 03:31:16
当按下一个键(如Y),用KeyPress来捕捉Y始终按下(如 i++,并反复刷新显示 i 的值)
就如同在windows写字板中一样,按键按下时会生效一下,然后总是要停顿1秒左右,才会持续生效
用KeyPress捕捉也会有这个表现
请问如何用在WinForm程序中实现,按下一个键之后,程序不停顿,而是从按下就开始一直能够反映出该按键被按下,(即 i 一直++,中间不停顿)

感觉好像要调用Win API键盘钩子什么的?请问有没有.net自己的办法?如果非要这样,请问需要先补充什么知识?例如C#如何调用Win API吗?
麻烦给个最简单的例子,目前不懂如何用C#调用Win API。

非常感谢
...全文
816 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dai78 2016-10-27
  • 打赏
  • 举报
回复
按下事件时全局变量赋一个值,弹起事件时在赋一个值,根据这个值就可以判断了
D56233577 2016-10-25
  • 打赏
  • 举报
回复
1楼正解,键盘、鼠标都是可以设置的。
圣殿骑士18 2016-10-25
  • 打赏
  • 举报
回复
KeyDown、KeyUp配合使用即可。KeyDown被触发,而KeyUp没有被触发,就代表一直按下中
  • 打赏
  • 举报
回复
程序中,应该捕获 KeyDown、KeyUp 的时候,不要胡乱使用 KeyPress。不要把“按下”偷换概念为“反复按下”。 不要纠结什么“c#如何调用 WINAPI”的无厘头的话。如果需要调用调用 windows SDK,你自然能搜到答案。如果不明白原理而去有目的地去搜索,盲目空想也是没用。
  • 打赏
  • 举报
回复
普通pc键盘的驱动本身就控制了触发间隔时间、或者说一秒钟触发多少次。pc键盘根本没有你说的“写字板(设备)1秒钟”那么长的时间,也就是几十毫秒。这个是windows去设置的。 有许多键盘(或者输入设备)是故意设计为避免连击的。例如银行密码输入小键盘就应该避免连击,因为使用者毕竟不是熟练地录入人员、容易出错。 因此不要以为键盘都是可以连击的,有些从底层硬件上就不会连续触发按键。除非用户抬起按键之后重新按下,才发出第二次按键信号。
泡泡龙 2016-10-25
  • 打赏
  • 举报
回复
我记得以前DOS命令里面是有修改第二个按键默认间隔的,好像是mode
融合量子初始、演化博弈与RK4的增强型红嘴蓝鹊优化器及其在UAV路径规划中的应用(Matlab代码实现)内容概要:本文提出了一种融合量子初始、演化博弈与四阶龙格-库塔法(RK4)的增强型红嘴蓝鹊优化器(QEG-RKRBMO),并将其应用于无人机(UAV)在复杂环境下的三维路径规划问题。该算法通过量子初始化增强种群多样性,引入演化博弈机制优化个体行为策略以平衡全局探索与局部开发能力,并利用RK4方法提升搜索路径的精度与稳定性。研究通过Matlab仿真验证了该算法在UAV路径规划中的优越性,有效解决了传统优化算法易陷入局部最优、收敛速度慢及路径精度不高等问题。; 适合人群:具备一定编程基础(熟悉Matlab)、从事智能优化算法、路径规划或无人机相关研究的科研人员及研究生。; 使用场景及目标:①解决复杂环境下无人机三维路径规划问题;②提升智能优化算法的收敛速度与全局寻优能力;③为智能算法改进与多策略融合提供技术参考与实现方案; 阅读建议:建议读者结合Matlab代码深入理解算法实现细节,重点关注量子编码、演化博弈策略设计及RK4在迭代过程中的集成方式,并可通过调整参数或更换测试场景进一步验证算法鲁棒性。

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧