zoukankan      html  css  js  c++  java
  • C# WinForm 消息通信简单版

    1。为了实现两个.exe 通信

    新建两个Windows窗体应用项目,修改接收方的Text属性,复制粘贴代码(看清楚在复制),接收方显示数据的控件,改成自己的,发送方的控件也是。打开两个程序,测试。

    发送方代码

    public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            //WM_COPYDATA消息所要求的数据结构
            public struct CopyDataStruct
            {
                public IntPtr dwData;
                public int cbData;
    
                [MarshalAs(UnmanagedType.LPStr)]
    
                public string lpData;
            }
    
            public const int WM_COPYDATA = 0x004A;
    
            //通过窗口的标题来查找窗口的句柄 
            [DllImport("User32.dll", EntryPoint = "FindWindow")]
            private static extern int FindWindow(string lpClassName, string lpWindowName);
    
            //在DLL库中的发送消息函数
            [DllImport("User32.dll", EntryPoint = "SendMessage")]
            private static extern int SendMessage
            (
            int hWnd, // 目标窗口的句柄 
            int Msg, // 在这里是WM_COPYDATA
            int wParam, // 第一个消息参数
            ref CopyDataStruct lParam // 第二个消息参数
            );
    
            private void button2_Click(object sender, EventArgs e)
            {
                //将文本框中的值, 发送给接收端 
                string strURL = textBox3.Text;
                CopyDataStruct cds;
                cds.dwData = (IntPtr)1; //这里可以传入一些自定义的数据,但只能是4字节整数 
                cds.lpData = strURL; //消息字符串
                cds.cbData = System.Text.Encoding.Default.GetBytes(strURL).Length + 1; //注意,这里的长度是按字节来算的
                SendMessage(FindWindow(null, "接收端"), WM_COPYDATA, 0, ref cds); // 这里要修改成接收窗口的标题(Text属性)“接收端”
            }
    
    
        }

    接收方代码

    public partial class Form2 : Form
        {
            public Form2()
            {
                InitializeComponent();
            }
    
            //WM_COPYDATA消息所要求的数据结构
            public struct CopyDataStruct
            {
                public IntPtr dwData;
                public int cbData;
    
                [MarshalAs(UnmanagedType.LPStr)]
                public string lpData;
            }
    
            private const int WM_COPYDATA = 0x004A;
            //接收消息方法
            protected override void WndProc(ref System.Windows.Forms.Message e)
            {
                if (e.Msg == WM_COPYDATA)
                {
                    CopyDataStruct cds = (CopyDataStruct)e.GetLParam(typeof(CopyDataStruct));
                   
    
                    listBox1.Items.Add(cds.lpData.ToString()); //将文本信息显示
                }
                base.WndProc(ref e);
            }
        }
  • 相关阅读:
    CQUOJ 10819 MUH and House of Cards
    CQUOJ 9920 Ladder
    CQUOJ 9906 Little Girl and Maximum XOR
    CQUOJ 10672 Kolya and Tandem Repeat
    CQUOJ 9711 Primes on Interval
    指针试水
    Another test
    Test
    二分图匹配的重要概念以及匈牙利算法
    二分图最大匹配
  • 原文地址:https://www.cnblogs.com/xiaojinFat/p/14115704.html
Copyright © 2011-2022 走看看