C# 发送、接收和处理自定义的WINDOWS消息
来源:互联网 发布:中世纪2优化9挪威 编辑:程序博客网 时间:2024/05/08 09:48
C# 发送、接收和处理自定义的WINDOWS消息
为了程序启动后自动执行主函数,在Form1_Load中直接执行启动函数,可能造成没有反应。当然,在Form1_Load中加入较长时间(比如2秒)的定时器,在定时器函数中关闭定时器(仅需要执行一次),再执行主函数会好些,但是我们不知道初始话的精确时间,这样的方法也存在危险。
我们知道WINDOWS应用程序是靠消息驱动的,最好的方法就是在Form1_Load中发送消息,自己截获消息后,才开始执行比较安全。下面分3步说明相关的方法步骤。
一、创建一个 C# 项目,并选择 Windows 应用程序,名称默认WindowsFormsApplication1
为了简单,所有项目都按默认值处理。
二、添加处理Windows 消息的方法,即重载 DefWndProc方法
点选菜单[视图]->[对象浏览器],打开对象浏览窗口(有的可能在[其他窗口]),在其中找到自己应用程序名WindowsFormsApplication1
protected override void DefWndProc(ref System.Windows.Forms.Message m)
我们选中DefWndProc(ref System.Windows.Forms.Message),此时在下面窗口会显示完整的函数protected override void DefWndProc(ref System.Windows.Forms.Message m),我们右击这行说明字符串,点选复制将其复制下来。转到窗口Form1.cs,粘贴到Form1类里面,注意前面的override关键字,适当修改就可以处理自定义消息了。
protected override void DefWndProc(ref System.Windows.Forms.Message m)
{
{
//处理启动 函数MessageBox.Show(message);//显示一个消息框
StartProcess();
default:
break;
}
三、引入发送消息的函数
我们需要PostMessage发送自定义消息,所以用如下语句引用它:
[DllImport("user32.dll")]
public static extern void PostMessage(IntPtr hWnd, int msg, int wParam, int lParam);
自定义消息号一般开始于0x0400,也定义一个常量 public const int USER = 0x0400;
这样就可以在Form1_Load中发送消息,以便自动开始执行程序。
private void Form1_Load(object sender, EventArgs e)
{
}
四 引用关键字的命名空间
对于上面的关键字DllImport,字符要正确,大小写也要正确,此时是黑色字体,还不认识,那就需要引用它的命名空间,方法如下,使用鼠标右击关键字DllImport,——解析——点选using System.Runtime.InteropServices ,即将所用的命名空间using System.Runtime.InteropServices;加入到项目中,关键字DllImport的字体变成绿色。
五 完整代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Runtime.InteropServices;
namespace WindowsFormsApplication1
{
}
六
1.建立项目的图片
2.弹出对象浏览器的图片
3.选择基类型Form的图片说明
4.对象浏览器设置的图片说明
5.加入重载方法DefWndProc的图片说明
6.引用关键字命名空间的图片说明
==更多可以参考网上内容==
==1==
http://www.beijibear.com/index.php?aid=139
==2==
「C#:windows消息大全-详细-有解释」
http://www.mox.cc/018e4d33b5bc0402-ddec43ad9d5cedd0.htm
==3==
c# Windows消息处理过程探究
http://blog.csdn.net/jjjfox/article/details/7360378
一、消息概述
1 什么是消息(Message)
2 消息驱动的过程
二、C#中的消息的封装
三、C#中消息的工作流程:
四、示例:
namespace WindowsApplication27
{
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication27
{
}
- C# 发送、接收和处理自定义的WINDOWS消息
- C#简单实现自定义消息的发送和接收
- 自定义消息的发送与接收处理
- C#发送和接收消息
- C# 收发和处理自定义的WINDOWS消息
- 自定义消息的发送和接收的方法
- VC 自定义消息的发送和接收方法
- DELPHI中自定义消息的发送和接收
- 关于Windows消息的发送和接收入门
- 关于Windows消息的发送和接收入门
- c#发送和接收get,post消息
- 消息的接收和处理
- 消息的创建发送和接收
- ActiveMQ 消息的发送和接收
- erlang的消息发送和接收
- 消息发送与接收处理
- windows消息发送与接收
- ROS---发送自定义消息,接收消息
- cisco ssh解析(使用java)
- Eclipse复制多行方法
- NSString的内存分配及管理
- phonegap/cordova开发中的分享功能
- 通过调用Java外部库来读取json文件
- C# 发送、接收和处理自定义的WINDOWS消息
- 终于有人把P2P、P2C、O2O、B2C、B2B、C2C 的区别讲透了!
- QThread与QTimer使用注意
- ——黑马程序员——C语言中的指针(二)
- 单模式匹配KMP求匹配位置和匹配数目
- java中AWT和SWing的区别与联系
- java网络编程——Socket和ServerSocket,套接字编程——简单聊天室
- Javascript定义类(class)的三种方法
- ajaxfileupload 始终不执行success 只执行error方法;SyntaxError: expected expression, got '<