关闭 Windows 11 窗口圆角边框(无需修改系统文件/管理员权限)

geelaw 2026-08-09 10:48 1

一个简单的 Windows API 小练手:



  1. 注册 Windows 事件钩子,对每个新窗口禁用圆角;

  2. 对每个当前存在的窗口禁用圆角。


单个 .cc 文件,排除注释和空行仅 41 行,古法编程。


https://github.com/GeeLaw/DisableRoundCorners

最新回复 (11)
  • loading 08-09 13:48
    1
    挂钩子,那很消耗资源了。
  • chutsetien 08-09 13:55
    2
    哈哈,难得见到同样超级厌恶圆角的人。

    不过其实这个已经有人做过了,参: https://github.com/valinet/Win11DisableRoundedCorners
  • geelaw 楼主 08-09 14:17
    3
    @loading #1 是不会注入其他进程的钩子,而且只监听很少的事件、反应很快,测试没有发现性能问题。

    @chutsetien #2 我知道那个方案的存在,但是那个方案需要管理员权限且会修改系统文件,这很可能导致自动更新挂掉,然后你会发现 DWM 起不来可能导致超时后蓝屏等等一系列问题……
  • chutsetien 08-09 14:30
    4
    @geelaw 倒不是那样,而是每次 CU 之后都得重新执行一次。
  • fairytale 08-09 14:37
    5
    有没有 win98 主题/doge
  • loading 08-09 14:50
    6
    为了方便测试,我让 ai 帮改了个 python3 版本的,按 Esc 退出并还原。

    直接 python3 xx.py 即可。
    还是有点圆角,不是 win8/10 的直角。

    https://gist.github.com/YCF/d336cf50ec0e28a9a2902aa23c774d74
  • geelaw 楼主 08-09 15:02
    7
    @loading #6 “不是直角”的原因单纯是 AI 写出来的是乱七八糟的:

    - EVENT_OBJECT_SHOW 是 0x8002 ,而 0x8003 是 _HIDE
    - EVENT_OBJECT_UNCLOAKED 是 0x8018
    - DWMWCP_DONOTROUND 是 1 ,而 3 是 DWMWCP_ROUNDSMALL
    - DWMWCP_ROUNDDEFAULT 不存在,正确的名字是 DWMWCP_DEFAULT ,这个数是 0
    - 处理所有当前窗口的回调里面过滤莫名其妙,尤其是取消设置的时候,无论窗口是否最小化都应该重设
    - if not hooks 语义错误,因为 hooks 是列表,只要安装了一个就会认为成功
    - 取消设置的逻辑错误,一般地,没有办法取消,因为每个进程自己也可能调用 DSWA 来控制自己的窗口要怎么圆角
  • loading 08-09 15:59
    8
    @geelaw #7 按你的意见修改了,确实是直角,ai 确实啥也不是哈。

    直角看着舒服多了,感谢。

    btw:gist 也更新了。
  • Need4more 08-09 18:44
    9
    支持 gcc 编译吗,vs 还是太重了对于一个小程序
  • loading 08-10 10:23
    10
    @Need4more #9 这就是我为啥贴了个 python 的出来,毕竟为了一时好奇装 vs 太重了。
    当然,op 不提供 exe 也是正确的。
  • geelaw 楼主 08-10 10:51
    11
    @Need4more #9 任何以 Win32 为受支持目标的应该都可以,试了一下 mingw-w64 gcc 15.2.0 (Compiler Explorer / Godbolt) 的 SDK 比较旧,把 EVENT_OBJECT_UNCLOAKED 替换为 0x8018 之后是可以的编译成功的。
* 帖子来源V2EX
返回