多屏幕場景下,使用golang實現不同屏幕顯示控制

一、 場景描述

在開發工作中,很多時候由於顯示屏幕有限,需要進行拓展,此處推薦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 進行編譯
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章