一、 場景描述
在開發工作中,很多時候由於顯示屏幕有限,需要進行拓展,此處推薦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 進行編譯