Files
nameit/README.md
T

156 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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,请到 <https://www.autohotkey.com/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 秒按工作区重新定位,应对分辨率/任务栏/显示器变化。
---
许可:随意使用与修改。