刚接触windows 不同程序 窗口消息传递,不理解IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam)这函数怎么用?消息内容怎么传递过去,还遇到需要message结构体?IntPtr怎么用呢?

但实际只是用来传个数据,不需要这么复杂,就简单写了下面程序。

1.发送端

public partial class Form1 : Form{private const int WM_USER = 0x0400;  //自定义消息号一般开始于0x0400,[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam); //发送消息函数。//找出窗口句柄handler,用起来方便。有看到过返回值时IntPtr[DllImport("User32.dll", EntryPoint = "FindWindow")]private static extern int FindWindow(string lpClassName, string lpWindowName);  public Form1(){InitializeComponent();this.Text = "消费者";label1.Text = "向X300A";}private void button1_Click(object sender, EventArgs e){int WINDOW_HANDLER;  //int msgNum;if(int.TryParse(textBox1.Text,out msgNum)==false)  //获取用户信息内容,这里只接受数字。{return;}WINDOW_HANDLER = FindWindow(null, "X300A");//通过窗口标题,获得句柄SendMessage(WINDOW_HANDLER, WM_USER, new IntPtr(msgNum), IntPtr.Zero);//前面两个参数,基本固定格式。//后面两个参数,把需要传递的参数转为IntPtr,就好了。//第四个参数因为没什么传的,这里就设为空}}

2.接收端

public partial class Form1 : Form{private const int WM_USER = 0x0400;  //自定义消息号一般开始于0x0400,发送端也是设置成这个public Form1(){InitializeComponent();this.Text = "X300A";label1.Text = "接收消费者信息";}protected override void WndProc(ref Message m)   //重新函数,处理接收的信息{switch (m.Msg){case WM_USER:string message =  m.WParam.ToString(); //转换成string类型,这样就能接收到发送端信息。textBox1.AppendText("接受到信息:"+message+"\n");Popup p1 = new Popup();            //自定义的一个窗口if(p1.ShowDialog()==DialogResult.OK)  {p1.Dispose();textBox1.AppendText("启动完毕\n");}break;default: break;}base.WndProc(ref m);}}

3.演示图

参考链接:

http://blog.sina.com.cn/s/blog_45eaa01a01013zbs.html

C# message简单实现窗口间信息接收与发送相关推荐

  1. 【UDP通过多线程改进,在一个窗口中同时接收又发送】

    package com.yjf.esupplier.common.test;import java.net.DatagramSocket; import java.net.SocketExceptio ...

  2. Spring/Boot/Cloud系列知识:SpringMVC进行HTTP信息接收和发送的过程(1)

    1.整体调用过程 本文承接本专题上一篇文章<Spring/Boot/Cloud系列知识:HttpMessageConverter转换器使用方式>,在上一篇文章中讲解了HttpMessage ...

  3. 使用WM_COPYDATA消息在不同进程间或窗口间通信传递数据

    WM_COPYDATA消息类型属于windows系统标准消息类型,主要用于进程间或不同窗口间进行信息传递,使用此消息的同时在接收端需要重写窗口的消息处理函数DefWndProc,以便读取消息内容. 为 ...

  4. 人类信息接收过去、现在与未来 ——我对于内容产业的判断

    作为一个互联网从业者,有些本质性的问题是需要弄透的,不然看到的都是表象,永远无法获得真知.在探索这一系列问题的过程中涉猎了不少资料,也做了很多思考.有些是想明白了的,有些是还需要继续探究的,我把自己思 ...

  5. C#窗口间传递消息(聊天记录)

    C#窗口间传递消息 链接:http://blog.csdn.net/chenyuling/archive/2007/05/25/1625907.aspx 链接:http://www.cnblogs.c ...

  6. Linux中write命令------实现用户间信息传递

    实现用户间信息传递,顾名思义,首先应该有两个用户名,这里准备了root用户(超级用户)和hurenxiang用户(普通用户),root用户相当于管理员,拥有很大权限,不用创建而实际存在的,而huren ...

  7. QT:复杂结构体不同窗口间传递

    QT:复杂结构体不同窗口间传递(父传子,子传父) (父传子) 在写程序时,难免会碰到多窗体之间进行传值的问题,今天主要谈一下复杂结构体传值的问题(网上有很多博客,看的头疼,本篇进行详细解读). 具体原 ...

  8. 使用scrapy爬取斗鱼直播间信息

    目录 1. 谷歌抓包工具的使用 1.1 打开Chrome开发者工具的方法 1.2 开发者工具的结构 1.3 network模块 2. 使用谷歌抓包工具抓取斗鱼数据 3. 使用scrapy爬取斗鱼直播间 ...

  9. TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd

    在文章TCP滑动窗口协议与流量控制中,我们已经理解了滑动窗口(发送窗口swnd和接收窗口rwnd). 在发送端TCP通过发送窗口提高分组报文的传输效率,同时TCP也要求发送端维护一个接收窗口(rwnd ...

最新文章

  1. 求逆元 - HNU 13412 Cookie Counter
  2. WebLogic RCE(CVE-2019-2725)漏洞之旅
  3. python代码转成java_如何实现Java代码转换成python代码
  4. 深入分析JVM逃逸分析对性能的影响
  5. linux禁用页面拷贝粘贴,【Linux基础】VI命令模式下删除拷贝与粘贴
  6. Serverless对研发效能的变革和创新
  7. java 抽象类语法_JAVA基础语法8--多态/抽象类/抽象方法
  8. mysql行级锁作用_Mysql事务及行级锁的理解
  9. Android工程重新编译问题
  10. 对勾函数_这16个Excel函数,帮你完成80%的数据统计工作
  11. tp3.2 视图中U函数传变量值
  12. DMSP/OLS夜间灯光数据
  13. icd11中文版精神障碍pdf_精神与行为障碍类别目录(ICD-11)(借鉴资料)
  14. 马尔科夫随机场 matlab,matlab马尔可夫随机场
  15. Word目录:【同一篇文档设置多个独立目录】详细过程
  16. 流年暗换,是什么偷走了我们的爱情
  17. TCP第四次挥手后为什么要等待2MSL后才断开链接?等待时间为什么是2MSL?
  18. MySQL查询语句练习题(面试时可能会遇到哦!)
  19. python中的date的含义_浅谈python中的dateime
  20. 基于机器学习的天气数据分析与预测系统

热门文章

  1. Xamarin效果第十八篇之GIS中复合型Mark
  2. .NET 生态系统的蜕变之 .NET 6
  3. ML.NET Cookbook:(20)我如何定义自己的数据转换?
  4. 如何在 C# 中使用隐式和显式操作符
  5. 公司高层要我转Java 我直接邮件回怼...
  6. asp.net core web mvc之异常
  7. 虚虚实实,亦假亦真的 ValueTuple,绝对能眩晕你
  8. 一切都要从华为云 CloudIDE 酷似 VS Code 说起
  9. 微软发布 SQL Server 2019 新版本
  10. 你必须知道的容器监控 (1) Docker自带子命令与Weave Scope