博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C#中使用SendMessage进行进程通信,可以发送字符串(转载)
阅读量:5732 次
发布时间:2019-06-18

本文共 1306 字,大约阅读时间需要 4 分钟。

转自:https://i.cnblogs.com/EditArticles.aspx?opt=1

        /// <summary>
        /// 定义结构体
        /// </summary>
        public struct COPYDATASTRUCT
        {
            public IntPtr dwData; //可以是任意值
            public int cbData;    //指定lpData内存区域的字节数
            [MarshalAs(UnmanagedType.LPStr)]
            public string lpData; //发送给目录窗口所在进程的数据
        }

       

发送方:

        [DllImport("User32.dll", EntryPoint = "SendMessage")]

        private static extern int SendMessage(int hWnd, int Msg, int wParam, ref COPYDATASTRUCT lParam);
 
        [DllImport("User32.dll", EntryPoint = "FindWindow")]
        private static extern int FindWindow(string lpClassName, string lpWindowName);
        const int WM_COPYDATA = 0x004A;//必须是这个数值,不能更改
 
        private void btnSend_Click(object sender, EventArgs e)
        {
            int hWnd = FindWindow(null, @"消息接受者");
            if (hWnd == 0)
            {
                MessageBox.Show("未找到消息接受者!");
            }
            else
            {
                string sendString = "测试发送数据";
                byte[] sarr = System.Text.Encoding.Default.GetBytes(sendString);
                int len = sarr.Length;
                COPYDATASTRUCT cds;
                cds.dwData = (IntPtr)0 ;
                cds.cbData = len + 1;
                cds.lpData = sendString;
                SendMessage(hWnd, WM_COPYDATA, 0, ref cds);
            }

        }

 

接受方:

    private static int WMA_InterPro = 0x004A;

        protected override void DefWndProc(ref Message m)
        {
          
            if (m.Msg == WMA_InterPro)
            {
                COPYDATASTRUCT cds = new COPYDATASTRUCT();
                Type t = cds.GetType();
                cds = (COPYDATASTRUCT)m.GetLParam(t);
               string receiveInfo=cds.lpData;  
            }
             else
            {
                base.DefWndProc(ref m);
            }
        }

转载地址:http://cblwx.baihongyu.com/

你可能感兴趣的文章
laravel中建立公共视图的方法
查看>>
Selenium&PhantomJS 完成爬取网络代理
查看>>
Android测试环境搭建(win7)
查看>>
C#后台调用浏览器打开下载连接地址的三种方法
查看>>
PHP CURL抓取网页 simple_html_dom类
查看>>
【Heap-dijkstra】Gym - 100923B - Por Costel and the Algorithm
查看>>
【置换群】Codeforces Round #393 (Div. 1) A. Pavel and barbecue
查看>>
【随机化】【并查集】Gym - 100851J - Jump
查看>>
安装charles
查看>>
网络安装archlinux(2012.8.20)笔记
查看>>
HDU 6044 - Limited Permutation | 2017 Multi-University Training Contest 1
查看>>
HDU 1073 - Online Judge
查看>>
git clone出现fatal: unable to access 'https://': SSL certificate problem: self signed certificate
查看>>
用MySQL创建数据库和数据库表
查看>>
计算题:挣值、预测、沟通、盈亏平衡点、
查看>>
RAM 大全-DRAM, SRAM, SDRAM的关系与区别
查看>>
Dedecms V5.7后台的两处getshell
查看>>
zhanzaiyi
查看>>
opencv3.2将中文输出到图片上
查看>>
Java序列化接口的作用总结1
查看>>