C# message简单实现窗口间信息接收与发送
2017-08-18 15:23
381 查看
刚接触windows 不同程序 窗口消息传递,不理解IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam)这函数怎么用?消息内容怎么传递过去,还遇到需要message结构体?IntPtr怎么用呢?
但实际只是用来传个数据,不需要这么复杂,就简单写了下面程序。
1.发送端
![](https://img-blog.csdn.net/20170818155316542?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2ludGVyeWUxMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.接收端
![](https://img-blog.csdn.net/20170818155610641?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2ludGVyeWUxMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
3.演示图
![](https://img-blog.csdn.net/20170818155753653?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2lud<br/>a0fb<br/>GVyeWUxMg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
参考链接:
http://blog.sina.com.cn/s/blog_45eaa01a01013zbs.html
但实际只是用来传个数据,不需要这么复杂,就简单写了下面程序。
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
相关文章推荐
- angularJS实现聊天窗口中发送和接收信息时,将聊天记录窗口滑动条实时滑至底部
- java Udp实现简单地发送接收信息
- C# socket 简单实现server呈现client发送信息
- 用API函数实现简单的网络发送和接收
- linux下基于udp的简单的接收与发送程序,开发板与本机接收与发送信息
- Java Socket发送与接收HTTP消息简单实现
- win32 窗口程序实现控制台信息跟踪 简单案例
- JAVA实现多用户接收服务器发送相同信息并显示各自屏幕上
- 数据报实现简单的客户端发送数据,服务端接收数据
- Java Socket发送与接收HTTP消息简单实现
- C#简单实现自定义消息的发送和接收
- 十.TCP与UDP发送和接收数据的简单实现
- Java实现的软键盘并可以向Windows任意窗口发送中/英文信息
- 简单socket服务(三)实现多客户端向服务器发送数据并保证服务器接收到数据
- 在VB.NET下利用Socket实现简单的字符串发送接收程序
- AsyncSocket(简单的实现与服务器的发送消息,接收消息)
- Java Socket发送与接收HTTP消息简单实现
- 通过Socket实现简单web服务器功能(接收页面请求信息)不使用Tomcat!
- 根据java的设计原则、设计模式实现了一个信息发送和接收的例子
- Java Socket发送与接收HTTP消息简单实现