从进程中操作WPF窗体的显示隐藏

2023-11-05

一、问题描述

如何在一个进程中,打开另一个进程中的wpf已经隐藏的窗体

二、解决方案

1、在WPF进程中,获取该窗体的句柄,并保存到某个文件,这个文件可以是内存映射文件,也可以是普通的xml文件。在WPF的MainWindow中,添加

     private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            IntPtr hwnd = new WindowInteropHelper(MainWnd).Handle;//窗体句柄
            WriteHandleToXML(hwnd.ToString());
        }

        private void WriteHandleToXML(string input)
        {
            XElement xmlTree1 = new XElement("Root",  new XElement("Child", input));

            string strFile = System.Environment.CurrentDirectory + @"\MyFile.xml";
            xmlTree1.Save(strFile);

        }

2、重点,在window_Closing事件与OnActivated事件中,

 private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
        {
            this.Hide();
            e.Cancel = true;
        }

       protected override void OnActivated(EventArgs e)
        {
            base.OnActivated(e);
            Show();
        }

3、在另一个进程中,读取XML文件,获取句柄,显示窗体


        [DllImport("user32.dll")]
        private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);

      private const int SW_HIDE = 0;              //常量,隐藏
        private const int SW_SHOWNORMAL = 1;        //常量,显示,标准状态
        private const int SW_SHOWMINIMIZED = 2;     //常量,显示,最小化
        private const int SW_SHOWMAXIMIZED = 3;     //常量,显示,最大化
        private const int SW_SHOWNOACTIVATE = 4;    //常量,显示,不激活
        private const int SW_RESTORE = 9;           //常量,显示,回复原状
        private const int SW_SHOWDEFAULT = 10;      //常量,显示,默认

private void ShowWPFWindow()
{ 
string handle = "";
string strFile = System.Environment.CurrentDirectory + @"\MyFile.xml";

                XmlDocument xmlDoc = new XmlDocument();

                xmlDoc.Load(strFile);


                XmlNode xn = xmlDoc.SelectSingleNode("Root");

                XmlNodeList xnl = xn.ChildNodes;
                XmlElement xe = (XmlElement)xnl[0];
                handle = xe.InnerText;
                int nHand = Int32.Parse(handle);// 获得文件中的句柄(字符串类型)// 转整型
                IntPtr intPtr = (IntPtr)nHand;// 转句柄
               
              bool b = ShowWindowAsync(intPtr, SW_SHOWNORMAL); //显示该句柄的窗口,如果没有显示则返回false
}

参考:

https://cloud.tencent.com/developer/ask/217950

https://blog.csdn.net/wmqdn/article/details/8961248

https://blog.csdn.net/b510030/article/details/52526270

https://blog.csdn.net/dxcgis/article/details/5757187?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从进程中操作WPF窗体的显示隐藏 的相关文章

  • 无法继承形状

    为什么我不能使用继承 a 的类Shapes class http msdn microsoft com en us library ms604615 28v vs 90 29 我需要延长Rectangle具有一些方法的类 但我想以与使用相同
  • WPF 列表框不会垂直滚动

    在 Groupbox 中 我有一个 Listbox ListboxItems 也在 XAML 中定义 列表框定义为
  • 调用异步方法在视图模型的构造函数中加载数据有警告

    我的视图包含一个 ListView 它显示来自互联网的一些数据 我创建一个异步方法来加载数据并在我的视图模型的构造函数中调用该方法 它有一个警告提示我现在使用await关键字 还有其他解决方案可以在构造函数中异步加载数据吗 有几种可以应用的
  • 如何让 DataTemplate.DataTrigger 检查大于或小于?

    下列DataTemplate DataTrigger如果是 则使年龄显示为红色equal to 30 如果是的话 如何使年龄显示为红色比 更棒 30
  • 根据 AD 组成员身份限制对 WPF 视图的访问

    我们有一个 WPF 应用程序 我们希望根据用户的 AD 组成员身份限制对应用程序的访问 我们可以将其作为每个视图的属性 或者作为用户启动应用程序时的检查吗 任何代码示例将不胜感激 在 NET 3 5 及更高版本上执行此操作的最简单方法是使用
  • 以编程方式从 Generic.xaml 查找资源

    我正在尝试实施WPF 和 Silverlight 中的样式绑定 摘自本文 http www wintellect com cs blogs jprosise archive 2011 04 19 silverlight 5 s new st
  • XAML WPF 如何在 FlowDocument 上添加内嵌背景图像?

    下面的代码是给Flow Document添加背景图片
  • WPF DataGrid - 将 TimeSeries 与 MultiBinding 相结合,丢失更改通知。为什么?

    我有一个具有两个 ObservableCollection 的类 其中 TimeValue 是带有更改通知的自定义日期时间 值配对 通过 INotifyPropertyChanged 我将这些称为 目标 和 实际值 当我将它们绑定到图表时
  • WPF - 普通 [标签:输入] 控制的最佳实践

    我想知道 这是在 WPF 中获取众所周知的标签输入 或输出 无关紧要 组合的最佳和最快的方法 这是一个简单的任务 只需考虑 对象 ME 的快速输出 名字 克里斯蒂安 年龄 28 心情 好 我知道 我可以使用带有文本块的网格 但说实话 这个
  • 拖动 Window 时无法可靠地调用 LocationChanged

    为了实现对接 我依靠监听 Window LocationChanged 事件来检测在屏幕上拖动的窗口的位置变化 但一位用户报告说 对接在他们的机器上无法工作 事实证明 他们在 Windows 性能选项中禁用了 拖动时显示窗口内容 因此只有在
  • 当 DataTable 为空时,DataGrid 显示空行

    我有一个DataGrid dg1 绑定到DataTable 数据集 表 代码运行良好并且DataGrid正在显示数据DataTable正确 但是 如果我Clear the DataTable the DataGrid也很清楚 但留下一个空行
  • 在 WPF 媒体元素中连续重播视频

    我有一个在媒体元素中播放的视频文件 我需要继续播放 因此我尝试了 me play me MediaEnded new RoutedEventHandler me MediaEnded 使用此事件方法 loop to keep video p
  • 如何绑定到 DynamicResource 以便可以使用 Converter 或 StringFormat 等? (修订版4)

    注意 这是对早期设计的修订 该设计具有无法在某种样式中使用的限制 从而大大削弱了其有效性 然而 这个新版本现在可以使用样式 本质上是让您可以在任何可以使用绑定或动态资源的地方使用它并获得预期的结果 从而使其更加有用 从技术上讲 这不是一个问
  • System.Windows.Threading.Dispatcher.Invoke(System.Delegate, System.Object[]) 何时添加?

    使用我的应用程序的一些人似乎越来越 System MissingMethodException Method not found System Object System Windows Threading Dispatcher Invok
  • WPF DataGrid 排序后滚动到顶部

    我有一个使用数据网格的 Net 4 0 WPF 应用程序 目前 按列排序后 网格的滚动位置保持在排序前的位置 对于此应用程序 我需要在任何排序后滚动到网格顶部 我尝试过像这样处理排序事件 Private Sub myDataGrid Sor
  • 获取颜色位置的深度,Kinect SDK

    我正在寻找方法 尽快 从 Kinect 相机获取颜色像素的相应深度 我找到了 MapDepthFrameToColorFrame 函数 但这只给我特定深度位置的颜色 我想要相反的颜色 我想要这个的原因是我将能够单击 RGB 图像上的某个位置
  • 过滤项目来源

    通过此代码 我设置了数据网格的 ItemsSource 不过 我有更多的 wpf 控件来过滤数据网格 例如从时间范围过滤数据网格 我可以为此编写一个新查询 但这似乎没有必要 因为数据已经可用 我只需要过滤它 最好的方法是什么 我能得到的任何
  • ListView:在资源字典中定义ItemsPanelTemplate

    我有一个 ListView 其布局看起来像 Windows 资源管理器视图 图标 一些详细信息 绑定到 ViewModel 中某处的列表 我的目标是能够随时在资源管理器视图或经典视图之间切换 我可以定义一个ItemsPanelTemplat
  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person

随机推荐

  • ChatGPT 原理与核心技术介绍(自然语言处理NLP的发展与Transformer的概念)

    文章目录 1 定义 ChatGPT与自然语言处理NLP 1 1 图灵测试 1 2 建模形式 多轮历史对话原理 1 3 NLP 的发展历程 规则 gt 统计 gt 强化学习 1 4 NLP 技术的发展脉络 1 5 ChatGPT 的神经网络结
  • 巧用枚举类型来管理数据字典

    巧用枚举类型来管理数据字典 文章目录 巧用枚举类型来管理数据字典 背景 管理数据字典方法 使用接口来管理数据字典 使用数据表管理数据字典 枚举的增强使用 枚举的优化策略 第一步优化 枚举继承接口 第二步优化 增加 Bean 存枚举值 使用享
  • apache mina 学习笔记之一:mina简介和环境搭建

    Mina简介 Apache MINA Multipurpose Infrastructure for Network Applications 是 Apache 组织一个较新的项目 它为开发高性能和高可用性的网络应用程序提供了非常便利的框架
  • 腾讯云图,让数据说话

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由腾讯云数据库 TencentDB发表于云 社区专栏 一 腾讯云图 数据之美 了解腾讯云图之前 我们先来看看数据可视化 这是星云图 他表示的是QQ同时在线人数 看到这个图大家脑袋
  • SSTI 无回显绕过_带外注入

    SSTI 无回显注入 带外注入 SSTI课程推荐 重庆橙子科技 SSTI模板注入 我在这里学到了很多 配合 docker 靶场 mcc0624 flask ssti 食用效果更佳 建议各位在学习带外时先基本掌握 TCP IP 的基础知识和
  • MyBatis查询时间格式转换yyyy-MM-dd HH:mm:ss

    MyBatis查询时间格式转换yyyy MM dd HH mm ss 一 通过配置model model private Date createTime JsonFormat pattern yyyy MM dd HH mm ss priv
  • 爬虫第六课:爬取携程酒店数据

    首先打开携程所有北京的酒店http hotels ctrip com hotel beijing1 简简单单 源代码中包含我们需要的酒店数据 你以为这样就结束了 携程的这些数据这么廉价地就给我们得到了 事实并不是如此 当我们点击第二页的时候
  • 怎么使用LINQ方法来比较自定义类型对象

    LINQ提供了方便的语法和很多操作对象集合的有用的方法 但是 要让LINQ比较方法如Distinct或Intersect能正确处理 类型必须要满足一些条件 让我们看看Distinct方法 它从集合中返回所有的不重复对象 List
  • 【我的面试-前端】以下是我在参加面试过程中被问到的问题以及答案

    JavaScript 数据类型 面试中经常被问到 JavaScript 数据类型都有哪些 有些时候面试者因为紧张连这最基础的题目都回答不出来或者回答不够全面 下面我们来具体了解下 JavaScript 数据类型吧 首先 需要答出 JavaS
  • 颜值超高的简单计算器(HTML+CSS+JS)

    先来看一下效果吧
  • k8s通过nfs-provisioner配置持久化存储

    一 nfs client provisioner简介 Kubernetes集群中NFS类型的存储没有内置 Provisioner 但是你可以在集群中为NFS配置外部Provisioner Nfs client provisioner是一个开
  • vue项目实现路由按需加载(路由懒加载)的3种方式

    vue项目实现按需加载的3种方式 转自 https segmentfault com a 1190000011519350 vue异步组件 es提案的import webpack的require ensure 1 vue异步组件技术 异步加
  • 修改本地host文件

    在有些时候可能因为访问一些网址的时候 可能因为浏览器对部分网站的签名不认可导致无法访问 根据浏览器不同 有时候可以选择高级选项允许访问 有时候只能停留在报错页 这时候可以通过设置本地的host文件 允许浏览器访问 首先我们找到目录C Win
  • VSCode HTML代码中怎么导入其他文件夹中的内容

    在标签下插入 link rel stylesheet href css xxx css 其中 css xxx css 为路径标签 意思是在一个叫做css的文件夹中有的一个叫xxx css的css样式文件
  • sqli-labs第二十六二十六a关

    这关油条加你的可以试试linux搭建sqlilabs这样比较简单 需要注意的 本关可能有的朋友在 windows 下无法使用一些特殊的字符代替空格 此处是因为 apache 的解析的问题 这里请更换到 linux 平台下 本关结合 25 关
  • 智能合约(一)————智能合约入门

    1 智能合约的基本组成 1 1 程序版本 1 2 合约声明 1 3 状态变量 1 4 合约方法 在这里constant相当于他声明这个局部变量不能更改 但是他并没有实际作用 实际就只是警示作用 2 地址adress address bala
  • GDB忽略SIGPWR和SIGCPU这两个信号

    用GDB 调试Java程序 陈皓 http blog csdn net haoel 背景 想要使用GDB调试程序 就需要用GNU的编译器编译程序 如 用GCC编译的C C 的程序 才能用GDB调试 对于Java程序也是一样的 如果想要用GD
  • 【嵌入式】7段数码管电路原理

    电路原理说明 中间的是F 小数点是G 上面的对应具体管 下面的代表各个大管 两两对应 上面4个为一个字节 有两个字节 下面直接为一个字节 要让某个数字亮起必须满足两个逻辑条件 对应的 LED SEL 必须为 0 低电频 代表对应笔画的 LE
  • 无符号整形和有符号整形的比较

    对无符号整形比较的错误认知 整形数据存储形式 进制的转换 原码 反码 补码 转换原理 代码演示 总结 整形数据存储形式 在计算机内存里 整数以补码形式存储 正数的补码即原码 进制的转换 原码 反码 补码 正数的原码 正数的反码 正数的补码
  • 从进程中操作WPF窗体的显示隐藏

    一 问题描述 如何在一个进程中 打开另一个进程中的wpf已经隐藏的窗体 二 解决方案 1 在WPF进程中 获取该窗体的句柄 并保存到某个文件 这个文件可以是内存映射文件 也可以是普通的xml文件 在WPF的MainWindow中 添加 pr