首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

wpf检测打开的窗口

在 WPF 中,可以使用 System.Windows.Window 命名空间中的 FromHandle 方法来获取对应窗口的实例。因此,为了检测是否有打开的窗口,您可以在应用程序中使用该方法并检查返回值。

具体实现可以按照以下步骤:

  1. 在您的应用程序中引入 System.Windows.Forms 命名空间。
代码语言:csharp
复制
using System.Windows.Forms;
  1. 在需要检查窗口打开的代码中,使用 FromHandle 方法并检查返回值。
代码语言:csharp
复制
if (Application.Current.MainWindow != null)
{
    // 窗口已打开
    Debug.WriteLine("窗口已打开");
}
else
{
    // 窗口未打开
    Debug.WriteLine("窗口未打开");
}

其中,Application.Current.MainWindow 属性返回当前应用程序的主窗口的 Window 对象。如果该窗口已打开,则 MainWindow 属性将包含该窗口的实例,否则将为 null

  1. 可以使用 Show 方法打开窗口,并设置 ShowInTaskbar 属性为 false,使打开的窗口不显示在任务栏中。
代码语言:csharp
复制
var window = new Window();
window.ShowInTaskbar = false;
window.Show();
  1. 在关闭窗口时,使用 Close() 方法。
代码语言:csharp
复制
window.Close();

以上是实现 WPF 应用程序中打开窗口的简单示例。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WPF 获取全局所有窗口创建显示事件 监控窗口打开

本文将告诉大家如何在 WPF 里面进行全局监控任意窗口创建显示打开,可以获取到每个 WPF 窗口打开时机。...这是一个开发时辅助机制,用来让开发者不要随便弹出窗口,我又好奇这个监控模块是如何监控到我弹出一个窗口,学习了监控模块机制,就写了这个博客 在 WPF 里面,可以通过 EventManager 监听全局路由事件...于是就可以进行监控窗口创建显示 监听窗口 SizeChangedEvent 路由事件是比较靠谱方式,这个有一点点违反开发者想法,开发者默认想是使用 LoadedEvent 事件。...但是在 WPF 里面做了一些性能优化,如果一个窗口没有 XAML 或者是没有任何代码监听了 Loaded 事件,那将不触发 LoadedEvent 路由事件。...也可以在事件里面对每个窗口注入一些有趣逻辑,或者是监听窗口各个事件,输出更多日志,让开发者可以通过日志了解到当前有哪些窗口依然还在显示 这是另一位大佬写代码,请看 https://gist.github.com

2K50

WPF窗口置顶

前言 窗口置顶有两种情况 应用内窗口置顶 应用外窗口置顶 一般我们这样设置窗口置顶 但是如果其他程序也置顶,后来置顶就会覆盖之前置顶...,所以我们要保证我们窗口永远置顶就要做如下设置。...停用窗口后 (成为后台窗口) : 用户切换到当前应用程序中另一个窗口。 用户使用 ALT + TAB 或使用任务管理器切换到另一个应用程序中窗口。 用户单击另一应用程序中窗口任务栏按钮。...Windows,需要通过处理事件来检测它们何时变为停用状态 Deactivated 。 第一次停用窗口后,它可能会在其生存期内重新激活和停用多次。...如果窗口最小化或最大化,则系统将窗口恢复到原来尺寸和位置。

2.2K30

WPF消息机制(二)- WPF内部5个窗口之隐藏消息窗口

目录 WPF消息机制(一)-让应用程序动起来 WPF消息机制(二)-WPF内部5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭消息窗口和系统资源通知窗口 (3)用于用户交互可见窗口 (4)...用于UI窗口绘制可见窗口 WPF消息机制(三)-WPF输入事件来源 WPF消息机制(四)-WPF中UI更新 WPF内部5个窗口 对于Windows系统来说,它是一个消息系统,消息系统核心就是窗口...对于WPF来说也是如此。那么WPF内部为什么需要窗口,又存在哪些窗口呢?...在这5个窗口中,只有一个是可见,可以处理输入事件与用户交互,其他4个窗口都是不可见,帮助WPF处理来自其他方面的消息。...接下来我会来介绍究竟这5个Win32窗口如何帮助WPF处理消息,我会根据每个窗口创建顺序来介绍。

1.8K50

WPF 全屏透明窗口

本文告诉大家如何在 WPF 做一个全屏透明窗口,和全屏透明窗口坑 使用下面代码就可以作出全屏透明窗口 public MainWindow() {...WindowState.Maximized; Background = Brushes.Transparent; Topmost = true; } 在 WPF...透明窗口会加上背景放到内存,尝试将上面程序在 2K 屏幕运行,将会看到大概需要 70M 内存。...如果屏幕分辨率更大,将会发现鼠标移动很慢,请看 【翻译】关于 WPF 透明窗口内存占用 另外会发现窗口其实和屏幕有一个像素,通过设置 ResizeMode="NoResize" 可以解决,因为这一个像素是用来拖动窗口...此外,设置 ResizeMode="NoResize" 可以解决: 17025 触摸bug 还原窗口再最大化,窗口出现偏移 切换屏幕,窗口出现偏移

70210

WPF 获取应用所有窗口

本文告诉大家如何获取应用内所有窗口,无论这些窗口有没显示 在 WPF 可以通过 Application.Current.Windows 列举应用所有窗口 foreach(Window window...in Application.Current.Windows ) { Console.WriteLine(window.Title); } 如果需要获取一个线程窗口,请看代码...一个空 WPF 程序有多少个窗口 WPF 内部5个窗口之 MediaContextNotificationWindow ---- 本文会经常更新,请阅读原文: https://...8F%A3.html ,以避免陈旧错误知识误导,同时有更好阅读体验。...欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接: https://lindexi.gitee.io ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

2K30

Chrome下打开窗口

一般点击打开窗口,有几种方式: 1、超链接a  有href属性、target为_blank 2、iframe,其target为_blank 3、window.open<可能会被拦截,看用户浏览器安全设置...因为extjs运行效率比较低,所以选择使用chrome访问系统,而在操作些按钮时候发现很多很奇特现象,这些现象只出现在chrome中: 1、打开一个窗口后,些窗口不关闭,将无法打开多个窗口,即使原有窗口关闭...打开窗口方式:window.open、form提交、iframe--表现上一致 2、页面中原本就有一个form,每次操作就修改里面一个参数,设置其值为随机数,亦不行 改用window.open还发现一个问题...,就是弹出窗口是没有工具栏和地址栏,且不在新选项卡中打开 后来搜索到一篇文章,有所启发,就有了如下代码: var nwin = window.open(); nwin.location = ‘xxxx...’;//需要打开地址 如果使用ajax请求地址后面的参数的话,需要将ajax改为同步,不然弹出窗口会在新窗口打开,而且没有工具栏和地址栏

3.5K30

WPF 窗口居中 & 变更触发机制

窗口首次显示位置 - WindowStartupLocation Windows启动时位置显示,WindowStartupLocation CenterOwner --显示在父窗口中间(设置Owner...1)在主窗口中居中显示-CenterOwner 设置窗口依靠位置Location(Left,Top)(左上角) 子窗口最大化时 --WindowState=“Maximized”最大化窗口,固定弹出到主屏幕...,因此需额外处理,根据屏幕Location设置位置; 父窗口最大化时 --父窗口最大化时,父窗口location,因窗口设置margin,有可能不准确,故取屏幕位置 CenterOwner窗口居中显示...--直接取父窗口位置/大小和子窗口大小,进行计算即可; PS:窗口位置Left/Top可能为负 /// /// 在主窗口中居中显示 /// /// <param...通过win显示设置,调整文本显示比例,屏幕位置转换(X,Y)``,得考虑DPI`换算; /// /// 在父窗口所在屏幕居中显示 /// /// <param

1.1K20

WPF 内部5个窗口之 MediaContextNotificationWindow

本文告诉大家在 WPF 内部5个窗口 MediaContextNotificationWindow 是做什么 在本文开始之前,希望大家先看下面的博客 WPF消息机制(一)- 让应用程序动起来 WPF...消息机制(二)- WPF内部5个窗口之隐藏消息窗口 WPF消息机制(三)- WPF内部5个窗口之处理激活和关闭消息窗口以及系统资源通知窗口 而 MediaContextNotificationWindow...是在 MediaContext 构造函数创建,用来提供给创建他 MediaContext 可以有接收和转发向顶级窗口广播窗口消息能力 在 MediaContextNotificationWindow...因为 DWM 通知只是广播给最顶层窗口。...通过这个方式就可以让 WPF MediaContext 接收到最顶层窗口消息 代码请看 https://referencesource.microsoft.com/#PresentationCore

56310

WPF消息机制(三)- WPF内部5个窗口之处理激活和关闭消息窗口以及系统资源通知窗口

目录 WPF消息机制(一)-让应用程序动起来 WPF消息机制(二)-WPF内部5个窗口 (1)隐藏消息窗口 (2)处理激活和关闭消息窗口以及系统资源通知窗口 (3)用于用户交互可见窗口 (4)...用于UI窗口绘制可见窗口 WPF消息机制(三)-WPF输入事件来源 WPF消息机制(四)-WPF中UI更新 处理应用程序激活和系统关闭窗口(Window 2#) 创建时机:在调用Application.Run...WPF为了安全起见没有让UI窗口来处理应用程序激活,反激活,以及操作系统关闭时对应消息,而是内部创建了一个隐藏窗口,专门用来接收WM_ACTIVATEAPP和WM_QUERYENDSESSION两个...WPF在应用出现MainWindow在初始化完成后,会创建一个隐藏窗口,专门处理来自系统相关资源更新后消息,比如WM_ThemeChanged,WM_SystemColorChanged,WM_DisplayChange...跟Window2#初衷类似,为了安全起见,没有通过可见UI窗口来处理这些消息,而是内容创建了这个隐藏Window4#窗口来处理这些消息,确保UI窗口可以安全更新由于系统Theme及相关资源改变后表现

1.9K90

WPF窗口激活作为前台最上层窗口方法

WPF 中,如果想要使用代码控制,让某个窗口作为当前用户输入逻辑焦点窗口,也就是在当前用户活动窗口最上层窗口,默认使用 Activate 方法,通过这个方法在大部分设备都可以做到激活窗口...组合可以让窗口作为当前用户活动,即使窗口之前是最小化或隐藏,都可以通过 Show 方法显示 但是某些设备窗口被盖在其他窗口下面,此时窗口 window.IsActive 还是 true 但是调用...Activate 不会让窗口放在上层 我在网上看到好多小伙伴调用了 SetForegroundWindow 方法,其实现在 WPF 是开源,可以看到 Window Activate 方法是这样写...Zorder,SetWindowPos使之最上,为了不影响后续窗口Zorder,改完之后,再还原     5.最后SetForegroundWindow 在 WPF 中对应更改窗口顺序使用是...Topmost 属性,同时设置顺序需要做一点小更改 在 WPF 中通过 c# - Bring a window to the front in WPF - Stack Overflow 可以了解到如何用

3.1K11
领券