C#如何模拟键盘某个键的长按动作

如题。。。

DllImport("user32.dll", EntryPoint = "keybd_event", CharSet = CharSet.Auto, ExactSpelling = true)]
public static extern void Keybd_event(byte vk, byte scan, int flags, int extrainfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;
//VK_MENU 相当于Alt键
Keybd_event((byte)12, 0x45, KEYEVENTF_EXTENDEDKEY, 0);//按下,有KEYEVENTF_KEYUP即为长按


Keybd_event((byte)12, 0x45, KEYEVENTF_KEYUP, 0);//抬起

不知道这种方法是如何实现的?
...全文
425 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
梨花树下思考 2013-06-24
  • 打赏
  • 举报
回复
一直不停的send不行吗
人生导师 2013-06-24
  • 打赏
  • 举报
回复
除了KeyDown事件外还有KeyUp事件的,如果没有触发KeyUp事件就说明你一直按着某个键的了
jiaoshiyao 2013-06-24
  • 打赏
  • 举报
回复
长按就是有个KeyDown有个KeyUp组合成按键一次 只要KeyDown后不KeyUp就可以了 我做这个是用的大漠插件。。。写外挂的一个com组件 没用过你这种方法调用user32.。。。。
Trent1985 2013-06-24
  • 打赏
  • 举报
回复
使用timer?设定个时间阈值T,超过T则为长按。。。偶的个人意见
「已注销」 2013-06-24
  • 打赏
  • 举报
回复
最笨的方法,在触发的KeyDown事件里写个timeSpan,你想定义多长时间为长按都可以!
_小黑_ 2013-06-24
  • 打赏
  • 举报
回复
你要做 连发吗
tcmakebest 2013-06-24
  • 打赏
  • 举报
回复
长按在 windows 系统下好像没有什么意义,就相当于不断按某个键

111,098

社区成员

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

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

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