源码开源地址:https://gitee.com/anglers/lookGoldPrice
下载地址:https://gitee.com/anglers/lookGoldPrice/releases/tag/2.0
金银价格桌面悬浮窗
实时显示黄金/白银价格的 Windows 桌面悬浮窗程序,纯 Go + Win32 API 实现,零依赖第三方 GUI 库。



功能特性
- 浮动于桌面的小型透明窗口,显示黄金(RTJ/国际)和白银(RTJ/国际)实时价格
- 支撑鼠标拖拽随意移动,双击窗口退出
- 右键菜单配置:
- 开机自启动
- 文字颜色(11 色可选)
- 文字大小(10px ~ 28px)
- 窗口透明度(30% ~ 100%)
- 显示买入价/卖出价切换
- 背景颜色(8 色可选)
- 关于信息
- 配置自动持久化至
%LOCALAPPDATA%\GoldPrice\config.json
- 数据每 3 秒自动刷新(API 异常不影响窗口工作)
- 窗口位置记忆,首次自动居中,后续记录上次位置
- 支持 DPI 缩放(Per-Monitor v2)
- 兼容 Windows 7 / 10 / 11
截图(窗口示例)

- 深色背景 + 圆角
- 金色"金"标签 / 银色"银"标签
- 上方:融通金价格 / 国际金价
- 下方:融通银价格 / 国际银价
- 中间分隔线
技术栈
| 层面 |
技术 |
| 语言 |
Go 1.25 |
| 窗口系统 |
Win32 API(user32.dll) |
| 图形绘制 |
GDI(gdi32.dll) |
| 字体渲染 |
CreateFontW + ClearType |
| 透明度 |
WS_EX_LAYERED + SetLayeredWindowAttributes |
| 拖拽 |
WM_NCHITTEST 劫持为 HTCAPTION |
| 配置存储 |
JSON 文件写入 %LOCALAPPDATA% |
| 开机自启 |
注册表 HKCU\Run |
| HTTP 请求 |
net/http + 连接池复用 |
| 线程安全 |
sync.RWMutex + Channel |
| 编译链接 |
-H=windowsgui(无黑窗口控制台) |
关键设计
完全不依赖 GUI 框架。 直接通过 syscall.NewLazyDLL 调用 Windows 原生 DLL:
user32.dll → RegisterClassExW, CreateWindowExW, GetMessage, DispatchMessage, ...
gdi32.dll → CreateFontW, RoundRect, DrawTextW, SetTextColor, ...
kernel32.dll → GetModuleHandleW
advapi32.dll → RegOpenKeyExW, RegSetValueExW(注册表开机自启)
防卡死机制:
runtime.LockOSThread() 锁定消息循环到同一 OS 线程
- 网络请求在独立 goroutine 执行,通过 channel 与 UI 线程通信
cfg 配置读写加 sync.RWMutex,消除数据竞争
- 所有 GDI 操作(brushes/pens/fonts)用后立即释放,无泄漏
WM_CLOSE / SC_CLOSE 被拦截,窗口不会意外消失
构建 & 运行
编译
go build -ldflags "-H=windowsgui -s -w" -o gold.exe .
| flag |
作用 |
-H=windowsgui |
编译为 Windows GUI 子系统,启动不显示控制台 |
-s |
去除符号表 |
-w |
去除 DWARF 调试信息 |
运行
双击 gold.exe 或在终端启动:
.\gold.exe
窗口将在屏幕中央出现,右键打开配置菜单。
配置文件
位置:%LOCALAPPDATA%\GoldPrice\config.json
示例内容:
{
"fontSize": 16,
"alpha": 85,
"colorName": "white",
"bgName": "dark",
"priceMode": "sell",
"autoStart": false,
"windowX": 960,
"windowY": 540
}
| 字段 |
含义 |
默认值 |
fontSize |
字号(px) |
16 |
alpha |
透明度(百分比) |
85 |
colorName |
文字颜色预设名 |
white |
bgName |
背景颜色预设名 |
dark |
priceMode |
显示买/卖价(buy/sell) |
sell |
autoStart |
开机自启 |
false |
windowX |
窗口 X 坐标(-1=居中) |
-1 |
windowY |
窗口 Y 坐标(-1=居中) |
-1 |
数据接口
GET https://vapi.danran0.cc/boot/api/price
返回 JSON,包含融通金/国际 黄金/白银/铂金等品种的买入价与卖出价,本项目使用:
hj_rtj(黄金·融通金) → 上方左边
hj_gj(黄金·国际)→ 上方右边
by_rtj(白银·融通金)→ 下方左边
by_gj(白银·国际)→ 下方右边
菜单快捷键(右键)
| 操作 |
说明 |
| 左键拖拽 |
移动窗口 |
| 双击窗口 |
退出程序(自动保存位置) |
| 右键 → 关闭 |
退出程序 |
| 右键 → 关于 |
显示联系信息(微信: KFC_good) |
项目结构
gold/
├── main.go # 全部源码(单文件)
├── go.mod # Go 模块定义
├── go.sum # 依赖校验
├── app.manifest # Windows 应用程序清单(DPI 感知 + 兼容性声明)
├── jintiao.ico # 应用图标
├── 1.txt # 构建命令备忘
├── config.json # 本地配置文件(运行后生成)
├── gold.exe # 编译产物
└── README.md # 本文件
系统兼容性
通过 app.manifest 声明支持:
- Windows 7
- Windows 8 / 8.1
- Windows 10
- Windows 11
所有调用的 Win32 API 自 Windows 2000 起就存在,兼容性良好。字体回退逻辑优先用微软雅黑,Win7 精简版无此字体会自动回退至宋体。
License
MIT
|