You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取默认打开的主AppWindow实例?

获取AppWindow实例并监听关闭事件实现方案

可以通过Windows UI相关的WinRT接口实现该需求,具体操作如下:

1 获取默认AppWindow实例

根据应用类型不同,获取方式分为两类:

1.1 UWP应用

使用Windows.UI.WindowManagement命名空间下的接口获取:

using Windows.UI.WindowManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Hosting;

// 直接从当前XAML窗口关联得到AppWindow实例
var appWindow = XamlWindowHost.GetAppWindowFromXamlWindow(Window.Current);

1.2 WinUI 3 桌面应用

使用Microsoft.UI.Windowing命名空间下的接口获取:

using Microsoft.UI.Xaml;
using Microsoft.UI.Windowing;
using WinRT.Interop;

// 这里替换为你应用的主窗口实例,单窗口应用可直接用Window.Current
Window mainWindow = Window.Current;
IntPtr hWnd = WindowNative.GetWindowHandle(mainWindow);
WindowId windowId = Win32Interop.GetWindowIdFromWindow(hWnd);
AppWindow appWindow = AppWindow.GetFromWindowId(windowId);

2 监听窗口关闭事件

拿到AppWindow实例后,订阅Closing事件即可实现关闭逻辑监听和拦截:

// 注册关闭事件监听
appWindow.Closing += OnAppWindowClosing;

// 事件处理逻辑
private void OnAppWindowClosing(AppWindow sender, AppWindowClosingEventArgs args)
{
    // 自定义处理逻辑,例如弹窗提示用户确认关闭
    // 若需要拦截关闭操作,设置args.Cancel = true即可
}

注意事项

  • UWP和WinUI 3的AppWindow分属不同命名空间,不要混用,功能和调用逻辑基本一致
  • 仅用户主动触发窗口关闭、应用内调用关闭接口时会触发该事件,应用被系统后台回收的场景不会触发

内容的提问来源于stack exchange,提问作者Vasiliy F

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 08:15:04