如何在C#中获取(或者被通知)所有的键盘或者鼠标消息。

zzq_fortu 2002-07-05 04:00:35
帮帮忙
...全文
171 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzq_fortu 2002-07-11
  • 打赏
  • 举报
回复
谢谢
zzq_fortu 2002-07-11
  • 打赏
  • 举报
回复
谢谢大家,最后用COM封装成功
zzq_fortu 2002-07-08
  • 打赏
  • 举报
回复
我试图用COM封装hook函数,但是原本运行正常的dll,一到COM里面事件函数就不被调用,不知是怎么回事
kalven 2002-07-05
  • 打赏
  • 举报
回复
我个人认为 依靠.net现有的类不可能实现
唯一的出路是通过System.Runtime.InteropServices.DllImportAttribute
调用win32的api 鼠标的消息好捕捉系统提供了api我星期一可以查查以前的
程序给你,但是键盘的消息我没试过 但我觉得应该先得到当前运行窗体的handle然后通过System.Windows.Forms.NativeWindow来捕捉 你试试巴
zzq_fortu 2002-07-05
  • 打赏
  • 举报
回复
我是要所有的窗口消息,不仅仅是本窗口
谢谢大家!
bearbaba 2002-07-05
  • 打赏
  • 举报
回复
下面是一个捕获键盘按键的一个例子,主题是dataGrid
对于您的功能,您可以将ProcessCmdKey方法按以下方式重载:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;

if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch(keyData)
{
case Keys.Return:
DataGridCell myCell = this.CurrentCell;
MessageBox.Show(this[myCell].ToString());
break;
}
}

return base.ProcessCmdKey(ref msg,keyData);
}
kalven 2002-07-05
  • 打赏
  • 举报
回复
你是要得到当前窗体的所有消息,还是所有窗体的
dason2u 2002-07-05
  • 打赏
  • 举报
回复
利用消息队列

110,571

社区成员

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

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

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