导航
  • 主页
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

怎样模拟键盘一个键的按住不放?比较困惑,标题够长

creamymami 2010-08-11 02:56:18
我用::keybd_event('A',MapVirtualKey('A',0),0,0);模拟“A”键按下,可是屏幕里只出现一个A,并不像按住真键盘一样会出现一串A。我看了下keybd_event函数、SendInput函数、WM_KEYDOWN消息,都没发现有相关的参数可以模拟真键盘按住不放的效果。
请问除了自己安定时器、定时发送一串消息以外,有没有更简单的办法?比如某个函数就能搞定。谢谢
...全文
220 点赞 收藏 18
写回复
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
wysbk002 2010-08-11
是键盘 频率 消息的高低
回复
creamymami 2010-08-11
还有一个问题,控制面板键盘设置里的“字符重复”设置,是设置的消息发送端的间隔时间,还是消息接收端的间隔时间?
回复
wysbk002 2010-08-11
起个线程 等方式很多 这个就是另外个问题啦
回复
Eleven 2010-08-11
[Quote=引用 14 楼 creamymami 的回复:]
遇到个问题。。。在循环里发消息,由于循环不结束,就无法继续执行;由于无法继续执行,就改变不了使循环结束的变量的值。。。这个矛盾貌似无法解决

那么只能在定时器里发消息了。。。只有这个办法了么?
[/Quote]
如果你用循环的话,你可以放在子线程里去做啊,当然不能在主线程里搞啊
回复
creamymami 2010-08-11
遇到个问题。。。在循环里发消息,由于循环不结束,就无法继续执行;由于无法继续执行,就改变不了使循环结束的变量的值。。。这个矛盾貌似无法解决

那么只能在定时器里发消息了。。。只有这个办法了么?
回复
wysbk002 2010-08-11
楼上的想分(ˇˍˇ) 想~疯了?
我宁愿帮人家解决了问题分多少无关系
回复
Eleven 2010-08-11
定时器+SendInput/keybd_event是可以的
回复
SuperLampard 2010-08-11
每天回帖即可获得10分可用分
回复
q8121676 2010-08-11
发送消息 WM_KEYDOWN
然后不发送 WM_KEYUP就可以了撒?
回复
ggf115 2010-08-11
这个不一样的,使用keybd_event()表示一个键一直被按下,它只被按下一次,所以只出现了一个字符,
而在键盘上一直按住一个键,操作系统实际上收到的是一连串的按下和松开消息,所以会出现一串字符。
要像健盘上那样按下一个键出现一连串的字符,除在定时器里完成外,可能就是设置一个死了循环了。。。。
回复
peterdan 2010-08-11
每天回帖即可获得10分可用分!
回复
creamymami 2010-08-11
[Quote=引用 6 楼 wysbk002 的回复:]
Sendmessage消息处理了才返回 (同步)
Postmessage不管是否处理直接返回 (异步)
[/Quote]

是这样啊,我还是先试试看效果吧,谢谢。
回复
wysbk002 2010-08-11
Sendmessage消息处理了才返回 (同步)
Postmessage不管是否处理直接返回 (异步)
回复
xunfeng_2008 2010-08-11
没有理解消息机制
回复
creamymami 2010-08-11
直接在循环里发送就可以?不用设置定时器?那样会不会发多了,导致按键松开的时候还在处理WM_KEYDOWN?
回复
zjz800800 2010-08-11
你没有理解消息机制,mfc的消息机制就可以完成你的任务,"发按键消息",postmessage就ok。
回复
wysbk002 2010-08-11
发送消息 WM_KEYDOWN
然后不发送 WM_KEYUP就可以了撒?

或者循环WHILE(TRUE)
{
发送按键消息;
if True then
break;

}
回复
yuhuaijun 2010-08-11
友情帮顶, 期待高手
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……