C# 窗口消息传递

时间:2021-01-08 16:02:25

与MFC类似,通过SendMessage和窗口句柄实现消息之间的传递

当然,这东西可以在线程和进程间通讯,实现线程消息的互相传递,文件系统升级卸载等功能


作用空间

using System.Runtime.InteropServices; // 导入user32.dll用到


主窗体

public partial class Form1 : Form
{
[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, int Msg, int wParam, int lParam);
// 定义自定义消息名称
private const int WM_USER = 0x0400;
public static int MY_MSG_TEST = WM_USER + 0x0100;
// 重载WndProc函数,接收消息
protected override void WndProc(ref Message m)
{
if (m.Msg == MY_MSG_TEST)
{
MessageBox.Show("789");
}
else
{
}
base.WndProc(ref m);
}

// 定义按钮发消息
private void button1_Click(object sender, EventArgs e)
{
SendMessage(this.Handle.ToInt32(), MY_MSG_TEST,0,0);
}
}

简单的消息传递