admin管理员组

文章数量:1516870

模拟QQ退出后自动重启,go build xxx.go 打包成exe运行。
processName 为你所需要的进程exe
processNamePath 为你所需要的进程路径

package main
import("bytes""errors""fmt""os""os/exec""regexp""strconv""time")var processName ="QQ.exe"var processNamePath ="D:\\Program Files (x86)\\Tencent\\QQ\\Bin\\"funcfindProcessID(processName string)(int,error){
   buf := bytes.Buffer{}
   cmd := exec.Command("wmic","process","get","name,processid")
   cmd.Stdout =&buf
   cmd.Run()
   cmd2 := exec.Command("findstr", processName)
   cmd2.Stdin =&buf
   data,_:= cmd2.CombinedOutput()iflen(data)==0{return-1, errors.New("not find")}
   info :=string(data)
   reg := regexp.MustCompile(`[0-9]+`)
   pid := reg.FindString(info)return strconv.Atoi(pid)}funcgetNowTime()string{
   timeNow := time.Now().Format("2006-01-02 15:04:05")return timeNow
}funcmain(){
   pid, err :=findProcessID(processName)if pid >0{
      fmt.Println("time:",getNowTime())
      fmt.Println(processName+" processID:", pid," is running")}if err ==nil{
      process, err := os.FindProcess(pid)if err !=nil{
         fmt.Println("get process err:", err)return}
      process.Wait()}
   attr :=&os.ProcAttr{
      Files:[]*os.File{os.Stdin, os.Stdout, os.Stderr},
      Env:   os.Environ(),}for{_, err :=findProcessID(processName)if err !=nil{
         p, err := os.StartProcess(processNamePath+processName,[]string{}, attr)if err !=nil{
            fmt.Println("err:", err)return}
         fmt.Println("time:",getNowTime())
         fmt.Println(processName+" restart pid:", p.Pid)
         p.Wait()
         time.Sleep(1* time.Second)
         fmt.Println("start ", processName)}}}

本文标签: 大法好为你所需编程