C#发送消息方法简析

开发 后端
C#发送消息功能的实现是什么方法在发挥的作用呢?C#发送消息的实现会为我们带来什么好处呢?那么本文就向你介绍详细的内容。

C#发送消息功能的实现是如何的呢?最近想模拟一下键盘按键,以便作一个游戏外挂.就试着用C#实现此功能那么这里向你介绍具体的实现过程,希望那个对你有个参考的作用。

C#发送消息功能的内涵方法:

C#中有一个Message结构,该结构中有一个函数Create()可以用来创建消息.原型如下:

  1. public static Message Create(  
  2. IntPtr hwnd,//接收消息的窗口句柄  
  3. int msg, //消息 的ID,也就是一个uint  
  4. IntPtr wparam,// 消息的Wparam域  
  5. IntPtr lparam //消息的Lparam域  

比如我们要发送一个字符串到记事本:

  1. string text ="范俊武搞的一个窗口消息测试!";//  
  2.  
  3. char[] chars = text.ToCharArray();//转换成数组  
  4.  
  5. foreach (char item in chars)  
  6. {  
  7. Message msg = Message.Create(hWnd, WM_CHAR,   
  8. new IntPtr(item), IntPtr.Zero);  
  9. //创建一个WM_CHAR消息.一会说这里边的参数是怎么一回事  
  10. MessageAPI.PostMessage(msg.HWnd, msg.Msg,   
  11. msg.WParam, msg.LParam);//调用Win32API函数 ,  
  12.  
  13. //关于这个函数在C#中的声明我就不写了网上有很多关于C#中平台调用的讲解.  
  14.  
  15. }  

C#发送消息之WM_CHAR介绍,它是Windows中的一个消息. MSDN是这样定义的:

The WM_CHAR message is posted to the window with the keyboard focus when a WM_KEYDOWN message is translated by the TranslateMessage function. The WM_CHAR message contains the character code of the key that was pressed.

我粘贴过来,大家看下,我英语不是很好,翻译不过来,不过我可以看明白是咋地一回事!大致是这个意思.当我们按下一个键的时候,产生一个WM_KEYDOWN 然后呢,这个消息被一个TranslateMessage 函数翻译成WM_CHAR消息.显然WM_CHAR消息携带了一个字符,比方说我们按了个字母"A"键,WM_CHAR就携带了"a" 这个character.

另外Create函数的第二个参数是Int型的.我们可以在Windows.h中看到WM_CHAR其实是一个常量:0x0102,一个十六进制数.WM_CHAR的ID号.代表WM_CHAR消息.

所以第二个参数是这么来的:

  1. const int WM_CHAR = 0x0102; 

WM_CHAR的消息中 wParam 是这么定义的,又是一段英文:Specifies the character code of the key. 就是一个按键的字符.

WM_CHAR的消息中 lParam ,这个参数比较复杂,是一个32位数,每一位都有定义.不过这个参数经常被设置成0.

那么hWnd从哪里来的呢,就是我们要发送消息到记事本窗口的句柄.这个句柄也是一个32位值.我们可以调用Win32API函数

  1. string className = "Notepad";  
  2. string captionName = "无标题 - 记事本"//可以通过SPY++了解到.  
  3.  
  4. IntPtr hWnd=FindWindow(className ,captionName);//找主窗口.  
  5.  
  6. hWnd = FindWindowEx(hWnd, IntPtr.Zero, "Edit""");找主窗口中的Edit窗口.  

PostMessage 就是发送消息了,各个参数都是在我们创建的消息Msg中包含的.挺简单的.

至于wParam和lParam 不同的消息 会有不同的定义,我们想发送什么消息,就去MSDN中关于这个消息的定义,可以了解到wParam和lParam 的意义!

C#发送消息功能的基本内容就向你介绍到这里,希望那个对你了解和学习C#发送消息功能有所帮助。

【编辑推荐】

  1. C#回车换行符的理解浅析
  2. .Net回车符的问题解决方案
  3. C#回车键事件实例解析
  4. C#回车切换焦点实例浅谈
  5. 关于C#回车切换焦点实现的探讨
责任编辑:仲衡 来源: 百度空间
相关推荐

2009-09-03 14:20:21

C#日期格式化

2009-08-13 15:48:57

C#指针

2009-08-12 16:38:35

C#读取XML节点

2009-08-13 10:27:28

C#读取Excel数据

2009-08-12 10:07:51

C#运算符

2009-09-03 10:52:41

C#递归树

2009-08-19 12:58:19

C#操作Word

2009-08-13 14:36:40

C#结构体构造函数

2009-09-02 10:49:46

C#调用析构方法

2009-08-20 16:02:15

C#正则表达式

2009-08-21 14:03:04

C#网络编程

2009-08-19 15:54:33

处理C#消息

2009-09-09 18:41:42

C# 加密散列算法

2009-08-20 09:58:06

C#操作文本文件

2010-01-20 14:25:56

函数调用

2010-12-20 10:56:32

Linux网络性能优化

2009-08-21 09:44:44

C#发送Email邮件

2010-01-25 10:10:42

C++函数参数

2009-07-30 18:50:32

C#发送消息C#应用程序

2011-07-12 14:04:58

点赞
收藏

51CTO技术栈公众号