C# message简单实现窗口间信息接收与发送
刚接触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简单实现窗口间信息接收与发送相关推荐
- 【UDP通过多线程改进,在一个窗口中同时接收又发送】
package com.yjf.esupplier.common.test;import java.net.DatagramSocket; import java.net.SocketExceptio ...
- Spring/Boot/Cloud系列知识:SpringMVC进行HTTP信息接收和发送的过程(1)
1.整体调用过程 本文承接本专题上一篇文章<Spring/Boot/Cloud系列知识:HttpMessageConverter转换器使用方式>,在上一篇文章中讲解了HttpMessage ...
- 使用WM_COPYDATA消息在不同进程间或窗口间通信传递数据
WM_COPYDATA消息类型属于windows系统标准消息类型,主要用于进程间或不同窗口间进行信息传递,使用此消息的同时在接收端需要重写窗口的消息处理函数DefWndProc,以便读取消息内容. 为 ...
- 人类信息接收过去、现在与未来 ——我对于内容产业的判断
作为一个互联网从业者,有些本质性的问题是需要弄透的,不然看到的都是表象,永远无法获得真知.在探索这一系列问题的过程中涉猎了不少资料,也做了很多思考.有些是想明白了的,有些是还需要继续探究的,我把自己思 ...
- C#窗口间传递消息(聊天记录)
C#窗口间传递消息 链接:http://blog.csdn.net/chenyuling/archive/2007/05/25/1625907.aspx 链接:http://www.cnblogs.c ...
- Linux中write命令------实现用户间信息传递
实现用户间信息传递,顾名思义,首先应该有两个用户名,这里准备了root用户(超级用户)和hurenxiang用户(普通用户),root用户相当于管理员,拥有很大权限,不用创建而实际存在的,而huren ...
- QT:复杂结构体不同窗口间传递
QT:复杂结构体不同窗口间传递(父传子,子传父) (父传子) 在写程序时,难免会碰到多窗体之间进行传值的问题,今天主要谈一下复杂结构体传值的问题(网上有很多博客,看的头疼,本篇进行详细解读). 具体原 ...
- 使用scrapy爬取斗鱼直播间信息
目录 1. 谷歌抓包工具的使用 1.1 打开Chrome开发者工具的方法 1.2 开发者工具的结构 1.3 network模块 2. 使用谷歌抓包工具抓取斗鱼数据 3. 使用scrapy爬取斗鱼直播间 ...
- TCP的三个窗口:发送窗口swnd、接收窗口rwnd、拥塞窗口cwnd
在文章TCP滑动窗口协议与流量控制中,我们已经理解了滑动窗口(发送窗口swnd和接收窗口rwnd). 在发送端TCP通过发送窗口提高分组报文的传输效率,同时TCP也要求发送端维护一个接收窗口(rwnd ...
最新文章
- 求逆元 - HNU 13412 Cookie Counter
- WebLogic RCE(CVE-2019-2725)漏洞之旅
- python代码转成java_如何实现Java代码转换成python代码
- 深入分析JVM逃逸分析对性能的影响
- linux禁用页面拷贝粘贴,【Linux基础】VI命令模式下删除拷贝与粘贴
- Serverless对研发效能的变革和创新
- java 抽象类语法_JAVA基础语法8--多态/抽象类/抽象方法
- mysql行级锁作用_Mysql事务及行级锁的理解
- Android工程重新编译问题
- 对勾函数_这16个Excel函数,帮你完成80%的数据统计工作
- tp3.2 视图中U函数传变量值
- DMSP/OLS夜间灯光数据
- icd11中文版精神障碍pdf_精神与行为障碍类别目录(ICD-11)(借鉴资料)
- 马尔科夫随机场 matlab,matlab马尔可夫随机场
- Word目录:【同一篇文档设置多个独立目录】详细过程
- 流年暗换,是什么偷走了我们的爱情
- TCP第四次挥手后为什么要等待2MSL后才断开链接?等待时间为什么是2MSL?
- MySQL查询语句练习题(面试时可能会遇到哦!)
- python中的date的含义_浅谈python中的dateime
- 基于机器学习的天气数据分析与预测系统
热门文章
- Xamarin效果第十八篇之GIS中复合型Mark
- .NET 生态系统的蜕变之 .NET 6
- ML.NET Cookbook:(20)我如何定义自己的数据转换?
- 如何在 C# 中使用隐式和显式操作符
- 公司高层要我转Java 我直接邮件回怼...
- asp.net core web mvc之异常
- 虚虚实实,亦假亦真的 ValueTuple,绝对能眩晕你
- 一切都要从华为云 CloudIDE 酷似 VS Code 说起
- 微软发布 SQL Server 2019 新版本
- 你必须知道的容器监控 (1) Docker自带子命令与Weave Scope