-----------------------------------------------------------‘接收窗体’代码.cs------------------------------------------------------------
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; namespace WindowsFormsApplication2 { /// <summary> /// 接收窗体 /// </summary> public partial class ReceiveForm : Form { SendForm sendForm; public ReceiveForm() { InitializeComponent(); sendForm = new SendForm(this.Handle); sendForm.Show(); } public const int USER = 0x500; /// <summary> /// 自定义消息 /// </summary> public const int MYMESSAGE = 0x500 + 1; /// <summary> /// 重写窗体的消息处理函数DefWndProc,从中加入自己定义消息 MYMESSAGE 的检测的处理入口 /// </summary> /// <param name="m"></param> protected override void DefWndProc(ref Message m) { switch (m.Msg) { //接收自定义消息MYMESSAGE,并显示其参数 case MYMESSAGE: SENDDATASTRUCT myData = new SENDDATASTRUCT();//这是创建自定义信息的结构 Type mytype = myData.GetType(); myData = (SENDDATASTRUCT)m.GetLParam(mytype);//这里获取的就是作为LParam参数发送来的信息的结构 textBox1.Text = myData.lpData; //显示收到的自定义信息 break; default: base.DefWndProc(ref m); break; } } } }
-----------------------------------------------------------‘接收窗体’代码.Desiger.cs------------------------------------------------------------
namespace WindowsFormsApplication2 { /// <summary> /// 接收窗体 /// </summary> partial class ReceiveForm { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(30, 72); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(189, 21); this.textBox1.TabIndex = 0; // // ReceiveForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(270, 174); this.Controls.Add(this.textBox1); this.Name = "ReceiveForm"; this.Text = "ReceiveForm"; this.ResumeLayout(false); this.PerformLayout(); } #endregion public System.Windows.Forms.TextBox textBox1; } }
-----------------------------------------------------------’发送窗体‘代码.cs------------------------------------------------------------
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.Runtime.InteropServices; namespace WindowsFormsApplication2 { /// <summary> /// 发送窗体 /// </summary> public partial class SendForm : Form { public SendForm() { InitializeComponent(); } public SendForm(IntPtr Handle) { SendToHandle = Handle; InitializeComponent(); } /// <summary> /// 接收窗口的句柄 /// </summary> private IntPtr SendToHandle; public const int USER = 0x500; /// <summary> /// 自定义的消息ID /// </summary> public const int MYMESSAGE = USER + 1; /// <summary> ///消息发送API /// </summary> /// <param name="hWnd">信息发往的窗口的句柄</param> /// <param name="Msg">消息ID</param> /// <param name="wParam">貌似没用</param> /// <param name="lParam">传输的数据参数</param> /// <returns></returns> [DllImport("User32.dll", EntryPoint = "SendMessage")] private static extern int SendMessage( IntPtr hWnd, // 信息发往的窗口的句柄 int Msg, // 消息ID int wParam, // 参数1 ref SENDDATASTRUCT lParam // 参数2 [MarshalAs(UnmanagedType.LPTStr)]StringBuilder lParam ); /// <summary> /// 发送消息 调用SendMessage API /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Send_Click(object sender, EventArgs e) { string myText = textBox1.Text; SENDDATASTRUCT myData = new SENDDATASTRUCT(); myData.lpData = myText; SendMessage(SendToHandle, MYMESSAGE, 100, ref myData);//发送自定义消息给句柄为SendToHandle 的窗口, } } }
-----------------------------------------------------------’发送窗体‘代码.Desiger.cs------------------------------------------------------------
namespace WindowsFormsApplication2 { /// <summary> /// 发送窗体 /// </summary> partial class SendForm { /// <summary> /// 必需的设计器变量。 /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// 清理所有正在使用的资源。 /// </summary> /// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows 窗体设计器生成的代码 /// <summary> /// 设计器支持所需的方法 - 不要 /// 使用代码编辑器修改此方法的内容。 /// </summary> private void InitializeComponent() { this.Send = new System.Windows.Forms.Button(); this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // // Send // this.Send.Location = new System.Drawing.Point(299, 69); this.Send.Name = "Send"; this.Send.Size = new System.Drawing.Size(75, 23); this.Send.TabIndex = 0; this.Send.Text = "Send"; this.Send.UseVisualStyleBackColor = true; this.Send.Click += new System.EventHandler(this.Send_Click); // // textBox1 // this.textBox1.Location = new System.Drawing.Point(48, 71); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(228, 21); this.textBox1.TabIndex = 1; // // SendForm // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(415, 166); this.Controls.Add(this.textBox1); this.Controls.Add(this.Send); this.Name = "SendForm"; this.Text = "SendForm"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.Button Send; private System.Windows.Forms.TextBox textBox1; } }
-----------------------------------------------------------’程序入口‘代码------------------------------------------------------------
using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace WindowsFormsApplication2 { static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new ReceiveForm()); } } }
------------------------------------总结----------------------------------------------------------------
1) 在发送窗体 调用API方法发送
2) 在接收窗体 重写窗体的消息处理函数DefWndProc 在m参数里面取出传过来的值