发送窗口的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Runtime.InteropServices;namespace WpfSendMsg
{/// <summary>/// Interaction logic for Window1.xaml/// </summary>public partial class Window1 : Window{const int WM_COPYDATA = 0x004A;[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(int hWnd, // handle to destination BR>            int Msg, // messageint wParam, // first message parameterref COPYDATASTRUCT lParam // second message parameter
        );[DllImport("User32.dll", EntryPoint = "FindWindow")]private static extern int Find(string lpClassName, string lpame);public Window1(){InitializeComponent();this.Title = "SentWindow";}private void btn1_Click(object sender, RoutedEventArgs e){//int HANDLER = Findnull, @"欲发送程序窗口的标题");int HANDLER = Find(null, @"WindowGet");if (HANDLER != 0){byte[] sarr = System.Text.Encoding.Default.GetBytes(tb1.Text);int len = sarr.Length;COPYDATASTRUCT cds;cds.dwData = (IntPtr)100;cds.lpData = tb1.Text;cds.cbData = len + 1;SendMessage(HANDLER, WM_COPYDATA, 0, ref cds);}}}public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;[MarshalAs(UnmanagedType.LPStr)]public string lpData;}
}

发送窗口的代码

如果接收窗口是wpf的窗口,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Runtime.InteropServices;
using System.Windows.Interop;namespace GetMsg
{/// <summary>/// Interaction logic for Window1.xaml/// </summary>public partial class Window1 : Window{const int WM_COPYDATA = 0x004A;public Window1(){InitializeComponent();this.Title = "WindowGet";SourceInitialized += AppWindow_SourceInitialized;}private void AppWindow_SourceInitialized(object sender, EventArgs e){WindowInteropHelper helper = new WindowInteropHelper(this);HwndSource hwndSource = HwndSource.FromHwnd(helper.Handle);hwndSource.AddHook(new HwndSourceHook(WndProc));}IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled){int retVal = 0;handled = false;switch ((int)msg){case WM_COPYDATA:{try{COPYDATASTRUCT cp = (COPYDATASTRUCT)Marshal.PtrToStructure(lParam, typeof(COPYDATASTRUCT));tb1.Text = cp.lpData;}catch (Exception e){System.Diagnostics.Debug.WriteLine(e.ToString());}handled = true;retVal = 1;break;}default:break;}return (IntPtr)retVal;}public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;[MarshalAs(UnmanagedType.LPStr)]public string lpData;}}
}

wpf接收窗口的代码

如果接收窗口是winform的窗口,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Runtime.InteropServices;namespace WpfSendMsg
{/// <summary>/// Interaction logic for Window1.xaml/// </summary>public partial class Window1 : Window{const int WM_COPYDATA = 0x004A;[DllImport("User32.dll", EntryPoint = "SendMessage")]private static extern int SendMessage(int hWnd, // handle to destination BR>            int Msg, // messageint wParam, // first message parameterref COPYDATASTRUCT lParam // second message parameter
        );[DllImport("User32.dll", EntryPoint = "FindWindow")]private static extern int Find(string lpClassName, string lpame);public Window1(){InitializeComponent();this.Title = "SentWindow";}private void btn1_Click(object sender, RoutedEventArgs e){//int HANDLER = Findnull, @"欲发送程序窗口的标题");int HANDLER = Find(null, @"WindowGet");if (HANDLER != 0){byte[] sarr = System.Text.Encoding.Default.GetBytes(tb1.Text);int len = sarr.Length;COPYDATASTRUCT cds;cds.dwData = (IntPtr)100;cds.lpData = tb1.Text;cds.cbData = len + 1;SendMessage(HANDLER, WM_COPYDATA, 0, ref cds);}}}public struct COPYDATASTRUCT{public IntPtr dwData;public int cbData;[MarshalAs(UnmanagedType.LPStr)]public string lpData;}
}

WinForm接收窗口的代码

转载于:https://www.cnblogs.com/pdfw/archive/2012/03/01/2375798.html

窗口之间传递消息的一个方法相关推荐

  1. PowerBuilder窗口之间传递多参数的方法

    PowerBuilder窗口之间传递多参数的方法 http://www.21tx.com 2002年05月12日 Blog oceanaut 在PowerBuilder中函数OpenWithParm, ...

  2. 在两个静态HTML页面之间传递参数的一个方法

    一个大型的监控平台,需要集成H3C的视频监控系统,集成的方式是通过静态页面.H3C提供一个页面的控件,直接在页面通过JS脚本调用.需要给这个控件传递一个摄像机的编号,传递后,页面的控件便显示出该摄像机 ...

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

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

  4. iphone 使用委托(delegate)在不同的窗口之间传递数据

    iphone 使用委托(delegate)在不同的窗口之间传递数据 在IOS里两个UIView窗口之间传递参数方法有很多,比如 1.使用SharedApplication,定义一个变量来传递. 2.使 ...

  5. VB如何在窗口之间传递数据?

    有多种方法可以在窗口之间传递数据,比如: 1.在模块文件(Module)中声明一个全局公共变量,然后在其他窗体中就可以通过这个变量来存取数据了,如: 在模块文件中声明变量a Public a as s ...

  6. Flume案例:模拟两个agent之间传递消息的场景

    模拟两个agent之间传递消息的场景 说明: 1.在hadoop1机器上有一个flume agent,通过exec监听tail命令输出的结果. 2.新增的结果通过avro sink的方式下层到hado ...

  7. C#中不同窗口之间传递值的两种方法

    在.net中不同窗口之间传值有很多种不同的方法,这里给出两种比较常用的方法: 项目中有两个窗体,Form1和Form2,要实现的效果是点击Form1中的Button1按钮实现TextBox1和Text ...

  8. pyqt5窗口之间传递信号_PyQt5不同窗口之间的值传递

    PyQt5 提供很多标准对话框, 这里主要讲自定义对话框怎么使用自定义信号来做消息传递 话不多说, 先上代码: from PyQt5.QtWidgets import QApplication, QW ...

  9. Android Studio App开发入门之在活动之间传递消息(附源码 超详细必看)(包括显示和隐式Intent,向上一个和下一个Activity发送数据)

     运行有问题或需要源码请点赞关注收藏后评论区留言~~ 显示Intent和隐式Intent Intent是各个组件之间的信息沟通的桥梁,既能在Activity之间沟通,又能在Activity与Servi ...

最新文章

  1. 技术图文:C# 语言中的扩展方法
  2. echart旭日图_150Echarts - 旭日图(Sunburst Label Rotate)
  3. 史上最全,100+大数据开源处理工具汇总
  4. 在Hyperopt框架下使用XGboost与交叉验证
  5. oracle之 Oracle归档日志管理
  6. Atititi tesseract使用总结
  7. windows和linux中搭建python集成开发环境IDE——如何设置多个python环境
  8. Python - SIP参考指南 - 介绍
  9. cmd命令不识别exp_GRAT2:一款功能强大的命令amp;控制(C2)工具
  10. quartz 2.0持久化到mysql_SpringBoot2.0整合Quartz定时任务(持久化到数据库,更为简单的方式)...
  11. Python学习笔记-数字类型
  12. webstorm 波浪线_WebStorm 使用
  13. 终于来了!Win11 预览版镜像提前出世(附 ISO 下载)
  14. 什么是Apache APR
  15. charles抓包https证书下载
  16. dlink 备份文件_D-Link路由器备份路由器配置信息教程
  17. NPOI 读取空Excel 空单元格报错的问题
  18. Docker容器技术(三)
  19. Spring中的Ioc、DI到底是啥
  20. console.log(console.log) = ?

热门文章

  1. 服务器云ide_语言服务器协议如何影响IDE的未来
  2. javascript调试_如何提高JavaScript调试技能
  3. java重定向带参数_急 求助重新封装重定向带参数问题
  4. JavaScript实现鼠标拖拽登录框
  5. selenium--iframe之模拟qq空间登录
  6. 【亲测有效】如何下载和安装Resilio BTSync
  7. jquery $.proxy使用 Jquery实现ready()的源码
  8. windows下安装mysql8.0压缩版
  9. 用户输入一个数字,找到所有能够除尽它的数的总个数
  10. Python取出列表相应值的位置(表处理)