Files
4566704 138c929bd4 feat(hardware): 自 go-hua 迁入硬件信息采集与变更检测
- WMI 采集主板/BIOS/显卡/内存/CPU/硬盘等 11 类设备 + 变更比对
- 新增依赖 gopsutil/yusufpapurcu/wmi, 附测试、例程与 README
2026-09-20 12:29:36 +08:00

39 lines
1.5 KiB
Go

// hardware 包示例:读取硬件信息(WMI)与硬件变更检测(Windows)
package main
import (
"fmt"
"git.zeroonesoft.cn/golib/zogo/hardware"
)
func main() {
hw, err := hardware.GetHardwareInfo()
if err != nil {
fmt.Println("获取失败:", err)
return
}
for _, p := range hw.Processor {
fmt.Printf("CPU: %s (物理核心 %d, 逻辑处理器 %d)\n", p.Name, p.NumberOfCores, p.NumberOfLogicalProcessors)
}
for _, m := range hw.PhysicalMemory {
fmt.Printf("内存: %s 容量 %d MB 速率 %d MHz 序列号 %s\n", m.Manufacturer, m.Capacity/1024/1024, m.Speed, m.SerialNumber)
}
for _, d := range hw.DiskDrive {
fmt.Printf("硬盘: %s 容量 %.0f GB 接口 %s\n", d.Caption, float64(d.Size)/1024/1024/1024, d.InterfaceType)
}
for _, v := range hw.VideoController {
fmt.Printf("显卡: %s 分辨率 %dx%d@%dHz 显存 %.0f MB\n",
v.Name, v.CurrentHorizontalResolution, v.CurrentVerticalResolution, v.CurrentRefreshRate, float64(v.AdapterRAM)/1024/1024)
}
for _, b := range hw.BaseBoard {
fmt.Printf("主板: %s %s\n", b.Manufacturer, b.Product)
}
// 硬件变更检测:与上次采集结果对比(返回 true 表示硬件发生变化)
fmt.Println("内存是否变更:", hardware.CheckPhysicalMemoryChanged(hw.PhysicalMemory, hw.PhysicalMemory))
fmt.Println("CPU 是否变更:", hardware.CheckProcessorChanged(hw.Processor, hw.Processor))
fmt.Println("硬盘是否变更:", hardware.CheckDiskDriveChanged(hw.DiskDrive, hw.DiskDrive))
}