一个简单的 Windows API 小练手:
- 注册 Windows 事件钩子,对每个新窗口禁用圆角;
- 对每个当前存在的窗口禁用圆角。
单个 .cc 文件,排除注释和空行仅 41 行,古法编程。
一个简单的 Windows API 小练手:
单个 .cc 文件,排除注释和空行仅 41 行,古法编程。
1
loading 3 days ago
挂钩子,那很消耗资源了。
|
2
chutsetien 3 days ago
|
3
geelaw OP @loading #1 是不会注入其他进程的钩子,而且只监听很少的事件、反应很快,测试没有发现性能问题。
@chutsetien #2 我知道那个方案的存在,但是那个方案需要管理员权限且会修改系统文件,这很可能导致自动更新挂掉,然后你会发现 DWM 起不来可能导致超时后蓝屏等等一系列问题…… |
4
chutsetien 3 days ago
@geelaw 倒不是那样,而是每次 CU 之后都得重新执行一次。
|
5
fairytale 3 days ago via Android
有没有 win98 主题/doge
|
6
loading 3 days ago
为了方便测试,我让 ai 帮改了个 python3 版本的,按 Esc 退出并还原。
直接 python3 xx.py 即可。 还是有点圆角,不是 win8/10 的直角。 https://gist.github.com/YCF/d336cf50ec0e28a9a2902aa23c774d74 |
7
geelaw OP @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 来控制自己的窗口要怎么圆角 |
9
Need4more 3 days ago via iPhone
支持 gcc 编译吗,vs 还是太重了对于一个小程序
|
11
geelaw OP @Need4more #9 任何以 Win32 为受支持目标的应该都可以,试了一下 mingw-w64 gcc 15.2.0 (Compiler Explorer / Godbolt) 的 SDK 比较旧,把 EVENT_OBJECT_UNCLOAKED 替换为 0x8018 之后是可以的编译成功的。
|