首页 > 系统相关 >WPF禁用Windows窗口自带的关闭按钮(非关闭拦截)

WPF禁用Windows窗口自带的关闭按钮(非关闭拦截)

时间:2023-09-18 19:22:04浏览次数:33  
标签:IntPtr Windows private 关闭 按钮 WPF UInt32

#region 禁用关闭按钮
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, UInt32 bRevert);
[DllImport("USER32.DLL ", CharSet = CharSet.Unicode)]
private static extern UInt32 RemoveMenu(IntPtr hMenu, UInt32 nPosition, UInt32 wFlags);
private const UInt32 SC_CLOSE = 0x0000F060;
private const UInt32 MF_BYCOMMAND = 0x00000000;

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
    var hwnd = new WindowInteropHelper(this).Handle;  //获取window的句柄
    IntPtr hMenu = GetSystemMenu(hwnd, 0);
    RemoveMenu(hMenu, SC_CLOSE, MF_BYCOMMAND);
}
#endregion

 

将此段代码放到WPF窗口的加载事件中,可以让WPF窗口标题中的关闭按钮禁用

但任务栏中缩略图的关闭按钮不会禁用(这应该是微软的bug)

标签:IntPtr,Windows,private,关闭,按钮,WPF,UInt32
From: https://www.cnblogs.com/MichaelJson/p/17712859.html

相关文章

  • RubyMine 2023:高效Ruby编码工具,适用于macOS和Windows
    RubyMine是JetBrains开发的一款为Ruby开发者量身定制的集成开发环境(IDE)。它为Ruby语言提供了全面的支持,包括代码编辑、调试、测试和集成版本控制系统等功能,帮助开发者更加高效地进行Ruby编程。→→↓↓载RubyMine2023mac+win版代码编辑与自动补全:RubyMine提供了强大的代码编......
  • windows11安装wsl (Unbuntu)
    win11安装wslWindowsSubsystemforLinux(简称WSL)在Windows10中首次亮相,现在在Windows11中得到了更强的支持和改进。这个功能使用户可以在Windows操作系统上运行本地Linux二进制文件。下面将介绍WSL的安装方法。前提条件在安装WSL之前,需要执行以下步骤。检查系统要求首先,......
  • Windows10 开启远程桌面
    注:需要关闭系统防火墙或在系统防火墙开放远程桌面方法1.在系统属性中开启远程桌面Win10开启远程桌面可以通过运行“sysdm.cpl”命令以打开系统属性,然后再开启远程桌面,操作步骤如下:步骤1. 按“Win+R”键,然后输入“sysdm.cpl”并按下回车键打开系统属性。 步骤2. 单击......
  • 通过Sysmon+Nxlogs收集Windows Server 2012服务器日志-并以Syslog形式发送Json格式数
    0x01环境介绍WindowsServer2012已经安装部署好了域控,目的除了收集Windows服务器本身的日志外还收集域控环境下的各种日志。0x02Nxlog配置和使用使用社区版本即可,下载地址:https://nxlog.co/downloads/nxlog-ce#nxlog-community-edition使用的版本是当前最新版本安装过程就省略,......
  • windows server 原创用户启动后,弹窗--启动监听过程错误
    描述:弹出应用程序:服务控制管理器:在系统启动时至少有一个服务或驱动程序产生错误。详细信息,请使用事件查看器查看事件日志。server2003/xp/2000每次弹出服务控制管理器“系统启动时至少有一个服务或驱动程序产生错误”解决方法。解决方法:打开注册表,找到HKEY_LOCAL_MACHINE\S......
  • vue3 浏览器“Uncaught runtime errors:” 全屏报错提示关闭
      在项目的vue.config.js中配置module.exports={devServer:{client:{overlay:false//编译错误时,取消全屏覆盖(建议关掉)}}}......
  • 从macOS创建Windows 11启动盘
    下载win11官方iso磁盘工具,抹除u盘,格式MS-DOS(FAT32),名称WINDOWS11双击挂载isobrewinstallwimlibrsync-avh--progress--exclude=sources/install.wim/Volumes/CCCOMA_X64FRE_ZH-CN_DV9//Volumes/WINDOWS11wimlib-imagexsplit/Volumes/CCCOMA_X64FRE_ZH-CN_DV9/s......
  • Windows打开资源管理器后出现两个D盘是什么原因?
    Windows打开资源管理器后出现两个D盘是什么原因?登陆管理者账号同时按【win键+R】,输入regedit,打开【注册表】前往【HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\DelegateFolders】找到【{F5FB2C77-0E2F-4A16-A381......
  • windows批量删除指定前缀key
    直接上代码:del_keys_by_prefix.bat@echooffecho调用格式:[redis地址][redis密码][redis库号][待删除的key前缀带*]setkeysfile=redis-cached-keys.txtredis-cli-h%1-a%2-n%3keys%4>%keysfile%FOR/F%%iin(%keysfile%)DO(redis-cli-h%1-a%2-n%3de......
  • WPF MVVM 循序渐进 (从基础到高级):pdf
    简介简单的三层架构示例和GLUE(胶水)代码问题第一步:最简单的MVVM示例-把后台代码移到类中第二步:添加绑定-消灭后台代码第三步:添加执行动作和“INotifyPropertyChanged”接口第四步:在ViewModel中解耦执行动作第五步:利用PRISMWPFMVVM的视频演示…内容很精彩,转了一个p......