java 多显示器截屏_多屏幕场景下,使用golang实现不同屏幕显示控制

一、 场景描述

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

电脑安装displayFusion软件,进行多屏幕显示的控制。然后通过程序模拟快捷键操作的方式进行相应的操作。

编写程序模拟鼠标拖动操作(此处我使用的是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. 指定自定义图标的方式

具体如下:

创建rc文件,文件名和go文件名相同

找自己喜欢的icon文件,和rc文件同目录,并在rc文件写入内容

IDI_ICON1 ICON "xxxx.ico"

执行 windres -o xxx.syso xxx.rc

然后go build 进行编译

你可能感兴趣的:(java,多显示器截屏)