Files
chatlog/internal/wechat/manager.go
Shen Junzheng 78cce92ce3 x
2025-03-19 13:11:09 +08:00

58 lines
973 B
Go

package wechat
import (
"strings"
"github.com/shirou/gopsutil/v4/process"
log "github.com/sirupsen/logrus"
)
const (
V3ProcessName = "WeChat"
V4ProcessName = "Weixin"
)
var (
Items []*Info
ItemMap map[string]*Info
)
func Load() {
Items = make([]*Info, 0, 2)
ItemMap = make(map[string]*Info)
processes, err := process.Processes()
if err != nil {
log.Println("获取进程列表失败:", err)
return
}
for _, p := range processes {
name, err := p.Name()
name = strings.TrimSuffix(name, ".exe")
if err != nil || name != V3ProcessName && name != V4ProcessName {
continue
}
// v4 存在同名进程,需要继续判断 cmdline
if name == V4ProcessName {
cmdline, err := p.Cmdline()
if err != nil {
log.Error(err)
continue
}
if strings.Contains(cmdline, "--") {
continue
}
}
info, err := NewInfo(p)
if err != nil {
continue
}
Items = append(Items, info)
ItemMap[info.AccountName] = info
}
}