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

原创
04/19 20:00
阅读数 334

一、 场景描述

在开发工作中,很多时候由于显示屏幕有限,需要进行拓展,此处推荐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 进行编译
展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部