一个按键问题,按下m键,相当于按下三次m键,输出mmm

tongmux55 2008-12-25 04:07:16
如题,当我按下键盘上的一个按键后,事件响应多次,例如按下m键,则显示多个m,怎么实现?
...全文
143 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
tongmux55 2008-12-25
  • 打赏
  • 举报
回复
谢谢lovefootball 和各位
lovefootball 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 tongmux55 的回复:]
如果想在记事本或其他程序中也能有这种效果怎么做?
[/Quote]

这个要用到Hook了
你得先监视下记事本或者所谓的其他程序
拿到他的消息池

然后监视到按键信息的时候用SendMessage发送消息
tongmux55 2008-12-25
  • 打赏
  • 举报
回复
如果想在记事本或其他程序中也能有这种效果怎么做?
wuyq11 2008-12-25
  • 打赏
  • 举报
回复
M-77
KeyPress事件中
int keyAscii = (int)e.KeyChar;

switch (keyAscii)
{
case 77:

}
Crazy_Xia 2008-12-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 cpio 的回复:]
如果只在你的某个控件上的话,比较容易,响应按键消息

如果要全局的话,C#能不能做我不太清楚
[/Quote]
------------
可以,不过要用win32 api
tommir3 2008-12-25
  • 打赏
  • 举报
回复
2楼
UP
Crazy_Xia 2008-12-25
  • 打赏
  • 举报
回复
顶缸了,我说的是我1楼回复的代码
cpio 2008-12-25
  • 打赏
  • 举报
回复
如果只在你的某个控件上的话,比较容易,响应按键消息

如果要全局的话,C#能不能做我不太清楚
Crazy_Xia 2008-12-25
  • 打赏
  • 举报
回复
上面的代码可能出现意外情况,如果后触发的事件先处理完的话
zgke 2008-12-25
  • 打赏
  • 举报
回复
private void Form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.K)
{
SendKeys.Send("K");
SendKeys.Send("K");
}
}
Crazy_Xia 2008-12-25
  • 打赏
  • 举报
回复
static int mark = 0;

void EventDealProgress(...)
{
// TODO: 事件处理

if(mark < 3)
{
mark++;
     // fire the event
}
else
mark = 0;
}

110,533

社区成员

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

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

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