背景:
每天工作早上开始工作第一件事就是重启电脑,再重启电脑后需要打开很多的软件、还要拉代码。所以我就像用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)
	}
}

第三个功能自动打开软件
目前还没有实现