# nameit —— 屏幕角落设备名水印 在屏幕任意角落常驻显示一段文字(默认是本机**电脑名**),像水印一样浮在所有窗口最上层, **鼠标点击完全穿透**,不影响任何操作。白色字身 + 黑色描边,深浅背景都清晰。 ![效果预览](docs/preview.png) > 上图:同样一段文字,上半部在白色背景上(黑色描边清晰),下半部在深色背景上(白色字身清晰)。 --- ## 1. 依赖 只需要 **[AutoHotkey v2](https://www.autohotkey.com/v2/)**,无需 Python / .NET / 任何第三方库。 - 安装 AHK v2 后,`AutoHotkey64.exe` 通常在 `C:\Program Files\AutoHotkey\v2\`。 - 脚本用 `A_AhkPath` 记录自身解释器路径,所以 AHK 装在别处也能正常开机自启。 ## 2. 目录结构 ``` D:\workbench\nameit\ ├─ nameit.ahk 主程序(双击即可运行) ├─ nameit.ini 配置文件(文字、字体、颜色、位置) ├─ README.md 本说明 └─ docs\ └─ preview.png 效果图 ``` ## 3. 快速开始 1. 双击 **`nameit.ahk`**,屏幕左下角立刻出现电脑名。 2. 托盘区出现 AutoHotkey 图标,右键可进行全部操作。 默认显示的是本机电脑名(`A_ComputerName`)。想改成任意文字,见下面的配置说明。 ## 4. 开机自启 任选一种: | 方式 | 操作 | | --- | --- | | 托盘菜单(推荐) | 右键托盘图标 → 勾选 **开机自启**;再点一次即取消 | | 命令行 | `nameit.ahk --install` 设置;`nameit.ahk --uninstall` 取消 | | 手动 | 把 `nameit.ahk` 的快捷方式放进 `shell:startup` 文件夹 | 实际做法是在 `%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\nameit.lnk` 生成一个指向 `AutoHotkey64.exe "…\nameit.ahk"` 的快捷方式,不写注册表、不改系统设置。 ## 5. 配置说明(nameit.ini) 改完保存后,右键托盘图标 → **重新载入配置**(或重启脚本)即可生效。 ### [general] | 键 | 默认 | 说明 | | --- | --- | --- | | `Text` | 空 | 显示的文字。**留空 = 自动使用电脑名** | | `Case` | `as-is` | 大小写:`as-is` 原样 / `upper` 全大写 / `lower` 全小写 | ### [font] | 键 | 默认 | 说明 | | --- | --- | --- | | `Face` | 空 | 字体名。留空 = 自动(纯英文 `Segoe UI`,含中文 `Microsoft YaHei UI`) | | `SizePx` | `50` | **字高,单位像素**(精确到像素,不是磅值) | | `Weight` | `700` | 字重:`700` 粗体,`400` 常规 | ### [color] | 键 | 默认 | 说明 | | --- | --- | --- | | `Text` | `FFFFFF` | 字身颜色,RGB 十六进制 | | `Stroke` | `000000` | 描边颜色 | | `StrokeWidth` | `4` | 描边粗细(像素),`0` = 不要描边 | ### [layout] | 键 | 默认 | 说明 | | --- | --- | --- | | `Corner` | `bottom-left` | 位置:`top`/`middle`/`bottom` + `left`/`center`/`right` | | `Monitor` | `1` | 显示器编号,`1` = 主显示器 | | `MarginX` | `24` | 距屏幕左右边缘的距离(像素) | | `MarginY` | `18` | 距屏幕上/下边缘的距离(像素,自动避开任务栏) | ### 常用示例 ```ini ; 显示固定文字,全大写,字号 72 [general] Text=HORSE Case=upper [font] SizePx=72 ; 放到右上角、第二块显示器 [layout] Corner=top-right Monitor=2 ; 黑字白边(浅色桌面上就是实心黑字) [color] Text=000000 Stroke=FFFFFF ``` ## 6. 托盘菜单 | 菜单项 | 作用 | | --- | --- | | 显示 / 隐藏 | 临时隐藏水印,再点恢复 | | 重新载入配置 | 重新读取 `nameit.ini` 并重绘 | | 打开配置文件 | 用默认编辑器打开 `nameit.ini` | | 开机自启 | 勾选/取消开机启动 | | 退出 | 结束程序 | ## 7. 卸载 1. 右键托盘图标 → 取消勾选 **开机自启**(或运行 `nameit.ahk --uninstall`)→ **退出**。 2. 删除 `D:\workbench\nameit` 整个目录即可,不残留注册表项。 ## 8. 常见问题 **Q:双击没反应 / 弹出「不是有效的 Win32 程序」?** 装的是 AHK **v1**。本脚本要求 v2,请到 安装 v2。 **Q:文字被任务栏挡住?** 程序定位用的是「工作区」(自动扣掉任务栏),正常不会重叠。若任务栏自动隐藏或换了位置, 拖动后 2 秒内会自动重新对齐。 **Q:多显示器只在一块屏上显示?** 默认主显示器(`Monitor=1`)。改 `Monitor=2`、`3`… 即可换屏;编号与 Windows 显示设置里的顺序一致。 **Q:全屏游戏 / 视频上看不到?** 独占全屏(DirectX exclusive fullscreen)的程序会盖住所有普通窗口,包括置顶窗口。 改成「无边框窗口化」即可看到。 **Q:字被某些深色/花哨壁纸淹没?** 把 `StrokeWidth` 调大到 `5`~`6`,或反过来用黑字白边(`Text=000000` / `Stroke=FFFFFF`)。 **Q:会影响我点击图标吗?** 不会。窗口带 `WS_EX_TRANSPARENT`,鼠标事件直接穿透到下方窗口;也不抢焦点、不出现在 Alt+Tab。 ## 9. 实现原理(简述) - 一个无边框 `WS_EX_LAYERED` 窗口,背景设为色键色,用 `SetLayeredWindowAttributes(LWA_COLORKEY)` 把背景抠成全透明,只剩文字。 - 文字用 GDI `CreateFontW(-像素高)` 创建,保证「字高 = 指定像素」;再 `WM_SETFONT` 应用到静态文本控件。 - 描边 = 以字形为中心、按半径采样一圈整数偏移,叠加多个同色文字层,最上层放白色字身。 - 置顶用 `WS_EX_TOPMOST` + `WinSetAlwaysOnTop`;穿透用 `WS_EX_TRANSPARENT`;不抢焦点用 `WS_EX_NOACTIVATE`。 - 每 2 秒按工作区重新定位,应对分辨率/任务栏/显示器变化。 --- 许可:随意使用与修改。