博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
捕获键盘和鼠标的消息机制
阅读量:5085 次
发布时间:2019-06-13

本文共 2037 字,大约阅读时间需要 6 分钟。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. namespace 消息机制获取
  10. {
  11. public partial class Form1 : Form
  12. {
  13. public Form1()
  14. {
  15. InitializeComponent();
  16. }
  17. private void Form1_Load(object sender, EventArgs e)
  18. {
  19. }
  20. //int t;
  21. //internal class MyMessager : IMessageFilter
  22. //{
  23. // public bool PreFilterMessage(ref Message m)
  24. // {
  25. // //如果检测到有鼠标或则键盘的消息,则使计数为0.....
  26. // if (m.Msg == 0x0200 || m.Msg == 0x0201 || m.Msg == 0x0204 || m.Msg == 0x0207)
  27. // {
  28. // }
  29. // return false;
  30. // }
  31. //}

 

  1. // Constant value was found in the "windows.h" header file.
  2. private const int WM_ACTIVATEAPP = 0x001C;
  3. private bool appActive = true;
  4. String strMsg;
  5. [System.Security.Permissions.PermissionSet(System.Security.Permissions.SecurityAction.Demand, Name = "FullTrust")]
  6. protected override void WndProc(ref Message m)
  7. {
  8. strMsg = string.Format("Message:Msg_{0} HWnd_{1} LParam_{2} Result_{3} WParam_{4}", m.Msg, m.HWnd, m.LParam, m.Result, m.WParam);
  9. // Listen for operating system messages.
  10. switch (m.Msg)
  11. {
  12. // The WM_ACTIVATEAPP message occurs when the application
  13. // becomes the active application or becomes inactive.
  14. case WM_ACTIVATEAPP:
  15. // The WParam value identifies what is occurring.
  16. appActive = (((int)m.WParam != 0));
  17. // Invalidate to get new text painted.
  18. this.Invalidate();
  19. break;
  20. }
  21. base.WndProc(ref m);
  22. }
  23. //或重写ProcessCmdKey的方法
  24. protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
  25. {
  26. int WM_KEYDOWN = 256;
  27. int WM_SYSKEYDOWN = 260;
  28. label1.Text = string.Format("Message:{0} keys:{1}",msg.Msg,keyData.ToString());
  29. if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)
  30. {
  31. switch (keyData)
  32. {
  33. case Keys.Escape:
  34. //this.Close();//esc关闭窗体
  35. break;
  36. }
  37. }
  38. return false;
  39. }
  40. private void timer1_Tick(object sender, EventArgs e)
  41. {
  42. this.Invoke((EventHandler)delegate
  43. {
  44. label2.Text = strMsg;
  45. });
  46. }

 

  1. }
  2. }
posted on
2016-02-16 16:26 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/VictorBlog/p/5193110.html

你可能感兴趣的文章
cer证书签名验证
查看>>
synchronized
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
Python-Web框架的本质
查看>>
QML学习笔记之一
查看>>
Window 的引导过程
查看>>
App右上角数字
查看>>
从.NET中委托写法的演变谈开去(上):委托与匿名方法
查看>>
小算法
查看>>
201521123024 《java程序设计》 第12周学习总结
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
IdentityServer4-用EF配置Client(一)
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
Unity3D研究院之打开Activity与调用JAVA代码传递参数(十八)【转】
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>