背景:
每天工作早上开始工作第一件事就是重启电脑,再重启电脑后需要打开很多的软件、还要拉代码。所以我就像用golang写一个项目。可以再重启后帮助我启动软件拉去代码。
首先是
1、提示框功能
描述读取txt中的配置,在windows中弹提示
1)读取文件
/*得到txt文件内的内容*/
func GetFileString(path string) []string {
var fileText string
file, err := os.Open(path)
if err != nil {
println("文件读取错误。请确认文件夹路径是否正确!")
println("失败提示err=", err)
}
defer file.Close()
reader := bufio.NewReader(file)
for {
readString, err := reader.ReadString('\n')
if len(fileText) > 1 {
fileText = fileText + "&|&|&|"
}
fileText = fileText + readString
if err == io.EOF {
break
}
}
return strings.Split(fileText, "&|&|&|")
}
2)将配置文件中信息组装成一个提示框的信息,当然还要定义一个结构体
/*提示框数据*/
type hintDate struct {
hintText string
filePath string
buttonsStr []string
buttonsPath []string
}
/*读取需要提示的内容*/
func readHintFile(path string) []hintDate {
//得到文件内容
ontHintText := aiutil.GetFileString(path)
hintDates := make([]hintDate, len(ontHintText))
for i := range hintDates {
splitText := strings.Split(ontHintText[i], "|||")
mind := len(splitText) / 2
hintDates[i] = hintDate{
hintText: splitText[0],
filePath: path,
buttonsStr: splitText[1 : mind+1],
buttonsPath: splitText[mind+1:],
}
}
return hintDates
}
3、弹出提示框
/*一个弹框*/
func PopupWindow(title string, message string, buttons []string, buttonsPath []string) {
setButtons := make([]toast.Action, len(buttons))
for i := range buttons {
setButtons[i] = toast.Action{"action", buttons[i], buttonsPath[i]}
}
notification := toast.Notification{
AppID: "Microsoft.Windows.Shell.RunDialog",
Title: title,
Message: message,
Icon: "D:\\AiAssistant\\picture\\hint.png", // 文件必须存在
Actions: setButtons,
}
err := notification.Push()
if err != nil {
log.Fatalln(err)
}
}
第二个功能执行cmd命令
描述:根据配置文件在指定目录下执行命令
主要代码:
type aiCommand struct {
path string//路径
command string//命令
param string//命令参数
}
//执行配置的命令
func doCommand(commands []aiCommand) {
for x := range commands {
command := commands[x]
if command.path == "" {
continue
}
cmd := exec.Command(command.command, command.param)
cmd.Dir = command.path
println("默认路径:", cmd.Dir, ",执行命令:", command.command)
output, err := cmd.CombinedOutput()
if err != nil {
fmt.Println("执行命令失败:", err)
return
}
println("命令输出:", output)
}
}
第三个功能自动打开软件
目前还没有实现