一、 场景描述

在开发工作中,很多时候由于显示屏幕有限,需要进行拓展,此处推荐displayFusion,确实是很不错的软件。言归正传,本文主要的应用场景是在大屏环境下,通常是电脑端和液晶大屏之前以拓展屏幕的方式来显示(主要是控制端——电脑,和显示端——大屏分辨率不一致,无法进行复制的方式显示),而通过web浏览器显示的时候,这就需要打开浏览器,然后鼠标把窗口拖拽至另一个显示器,也就是液晶大屏上去。
    这一过程无疑是比较麻烦,而且一旦大屏和控制电脑距离较远时,无法知晓内容是否已拖拽至大屏上。
    因此,经过调研,我采用了如下方案进行实现:

  1. 电脑安装displayFusion软件,进行多屏幕显示的控制。然后通过程序模拟快捷键操作的方式进行相应的操作。
  2. 编写程序模拟鼠标拖动操作(此处我使用的是displayFusion的快捷键方式实现)

二、 编码实现

模拟快捷操作的编程语言我使用了go作为首选,并且选择了github.com/go-vgo/robotgo 库作为键盘操作依赖,具体代码实现如下:

package main

import (
    "github.com/go-vgo/robotgo"
    "os/exec"
)

func main() {
    //打开浏览器
    datapath := "http://xxxxx.com"
    cmd := exec.Command("cmd", "/c", "start "+datapath)
    cmd.Run()
    //执行显示器切换,中间延迟3秒,主要是为了防止程序窗口还没有打开
    robotgo.Sleep(3)
    robotgo.KeyTap("a", "ctrl", "cmd")
    //浏览器全屏显示
    robotgo.KeyTap("f11")
}

三、打包操作

1. 默认打包方式

直接go build 即可,会生成对应的可执行文件,不同平台的配置参数可搜索go语言打包;

linux下打包

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

windows下打包

set GOARCH=amd64   //设置目标可执行程序操作系统构架,包括 386,amd64,arm
set GOOS=linux     //设置可执行程序运行操作系统,支持 darwin,freebsd,linux,windows
go build           //打包

2. 指定自定义图标的方式

具体如下:

  1. 创建rc文件,文件名和go文件名相同
  2. 找自己喜欢的icon文件,和rc文件同目录,并在rc文件写入内容
IDI_ICON1 ICON "xxxx.ico"
  1. 执行 windres -o xxx.syso xxx.rc
  2. 然后go build 进行编译