==引入包==
go get github.com/go-vgo/robotgo
==源代码==
package main
import (
"fmt"
"github.com/go-vgo/robotgo"
"strconv"
"strings"
"time"
)
func main() {
browserMap := make(map[string]string)
browserMap["chrome.exe"] = "谷歌浏览器"
browserMap["iexplore.exe"] = "IE浏览器"
browserMap["sogouexplorer.exe"] = "搜狗浏览器"
browserMap["firefox.exe"] = "火狐浏览器"
browserMap["opera.exe"] = "Opera浏览器"
browserMap["safari.exe"] = "Safari浏览器"
browserMap["360se.exe"] = "360浏览器"
browserMap["maxthon.exe"] = "遨游浏览器"
browserMap["netscape.exe"] = "网景浏览器"
// 浏览器集合
fmt.Println("工具支持以下浏览器:")
i := 1
for id, name := range browserMap {
fmt.Println(fmt.Sprintf("%d.%s(%s)", i, name, id))
i++
}
fmt.Println()
// 输入切换时间
var input string
fmt.Print("请输入切换间隔时间(秒): ")
_, err := fmt.Scanln(&input)
if err != nil {
fmt.Println(err.Error())
return
}
interval, err := strconv.Atoi(input)
if err != nil {
fmt.Println(err.Error())
return
}
// 启动定时任务
ticker := time.NewTicker(time.Second * time.Duration(interval))
defer ticker.Stop()
for {
select {
case <-ticker.C:
switchPage(browserMap)
}
}
}
func switchPage(browserMap map[string]string) {
// 获取当前窗口
pid := robotgo.GetPid()
name, err := robotgo.FindName(pid)
// 是否在范围内
lower := strings.ToLower(name)
_, has := browserMap[lower]
if !has {
fmt.Println(fmt.Sprintf("当前窗口(%s)非Chrome浏览器。", lower))
return
}
// 模拟按下Ctrl键
err = robotgo.KeyToggle(robotgo.Ctrl, "down")
if err != nil {
fmt.Println(err.Error())
return
}
time.Sleep(100 * time.Millisecond)
// 模拟按下PageDown键
err = robotgo.KeyTap(robotgo.Pagedown)
if err != nil {
fmt.Println(err.Error())
return
}
time.Sleep(100 * time.Millisecond)
// 模拟释放Ctrl键
err = robotgo.KeyToggle(robotgo.Ctrl, "up")
if err != nil {
fmt.Println(err.Error())
return
}
fmt.Println(fmt.Sprintf("%s %s", "切换页面成功", time.Now().Format("2006-01-02 15:04:05")))
}
==运行效果==
