最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用golang在windows上設置全局快捷鍵的操作

 更新時間:2024年02月01日 09:30:58   作者:Aisre  
最近在工作中,總是重復的做事,想著自己設置一個快捷鍵實現(xiàn)windows 剪貼板的功能,所以本文小編給大家分享了使用golang在windows上設置全局快捷鍵的操作,文中有相關的代碼示例供大家參考,需要的朋友可以參考下

hotkey熱鍵

1.需求

最近在工作中,總是重復的做事,想著自己設置一個快捷鍵實現(xiàn)windows 剪貼板的功能,網(wǎng)上找資料,用了一天時間實現(xiàn)熱鍵功能

2.使用包

golang.design/x/hotkey
golang.design/x/clipboard

這兩都要魔法下載

3.開發(fā)文檔

github的star不太多,上面的文檔寫得也很少

clipboard

在這里插入圖片描述

hotkey

在這里插入圖片描述

4.具體實現(xiàn)

package main

import (
	"fmt"
	"log"
	"os"
	"os/signal"
	"regexp"
	"strings"
	"syscall"
	"time"

	"golang.design/x/clipboard"

	"golang.design/x/hotkey"
	"golang.design/x/hotkey/mainthread"
)

func main() {
	mainthread.Init(fn)
}

func fn() {
	err := clipboard.Init()
	if err != nil {
		panic(err)
	}
	// wg := sync.WaitGroup{}
	// wg.Add(2)
	go func() {

		for {
			err := listenHotkey(hotkey.KeyQ, hotkey.ModShift)
			if err != nil {
				log.Println(err)
			}
			textData := clipboard.Read(clipboard.FmtText)
			//log.Println(string(textData))
			_ = clipboard.Write(clipboard.FmtText, []byte(processString(string(textData))))

		}
	}()
	go func() {

		for {
			err := listenHotkey(hotkey.KeyW, hotkey.ModShift)
			if err != nil {
				log.Println(err)
			}
			//textData := clipboard.Read(clipboard.FmtText)
			//log.Println(string(textData))
			_ = clipboard.Write(clipboard.FmtText, []byte(processString("<font color=red>**(核心步驟)**</font>")))

		}
	}()
	go func() {

		for {
			err := listenHotkey(hotkey.KeyE, hotkey.ModShift)
			if err != nil {
				log.Println(err)
			}
			//textData := clipboard.Read(clipboard.FmtText)
			//log.Println(string(textData))
			_ = clipboard.Write(clipboard.FmtText, []byte(processString("<font color=red>**(核心步驟)**</font>(1)報錯問題的解釋:")))

		}
	}()
	go func() {

		for {
			err := listenHotkey(hotkey.KeyR, hotkey.ModShift)
			if err != nil {
				log.Println(err)
			}
			//textData := clipboard.Read(clipboard.FmtText)
			//log.Println(string(textData))
			_ = clipboard.Write(clipboard.FmtText, []byte(processString("<font color=red>**(核心步驟)**</font>(2)問題的解決方法:")))

		}
	}()

	sigChan := make(chan os.Signal, 1)

	// 注冊多個信號
	signal.Notify(sigChan, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)

	// 啟動 goroutine 處理信號
	go func() {
		for {
			// 等待信號
			sig := <-sigChan

			switch sig {
			case os.Interrupt:
				fmt.Println("Received interrupt signal (Ctrl+C)")
			case syscall.SIGTERM:
				fmt.Println("Received termination signal")
			case syscall.SIGQUIT:
				fmt.Println("Received quit signal (Ctrl+\\)")
			}

			// 執(zhí)行清理工作,例如關閉資源
			// 在實際應用中,你可能需要在這里添加自定義的清理邏輯

			// 模擬一些清理工作
			time.Sleep(2 * time.Second)

			// 退出程序
			os.Exit(0)
		}
	}()
	for {
		// 在實際應用中,這里可能是程序的主要工作邏輯
		time.Sleep(1 * time.Second)
	}
}

func listenHotkey(key hotkey.Key, mods ...hotkey.Modifier) (err error) {
	var ms []hotkey.Modifier
	ms = append(ms, mods...)
	hk := hotkey.New(ms, key)

	err = hk.Register()
	if err != nil {
		return
	}

	<-hk.Keydown()
	log.Printf("hotkey: %v is down\n", hk)
	<-hk.Keyup()
	log.Printf("hotkey: %v is up\n", hk)
	hk.Unregister()
	return
}

func processString(input string) string {
	// 使用正則表達式去除字符串兩邊的``
	re := regexp.MustCompile("`(.*)`")
	matches := re.FindStringSubmatch(input)
	if len(matches) > 1 {
		input = matches[1]
	}

	// 去除兩邊空格
	input = strings.TrimSpace(input)

	// 替換 <font color=red>**{}**</font>
	replacedContent := strings.ReplaceAll("<font color=red>**{}**</font>", "{}", input)
	//input = strings.ReplaceAll(, "<font color=red>**{}**</font>", "replacement_text")

	return replacedContent
}

總結就是要多看issues上面得回答,在加上自己得經(jīng)驗。我還結合fyne寫了一個小工具。等下面文章會給出地址??聪滦Ч?/p>

5.fyne結合hotkey 開發(fā)一個輔助工具

在這里插入圖片描述

以上就是使用golang在windows上設置全局快捷鍵的操作的詳細內容,更多關于golang windows設置快捷鍵的資料請關注腳本之家其它相關文章!

相關文章

  • golang 交叉編譯C++ dll配置文件的實現(xiàn)

    golang 交叉編譯C++ dll配置文件的實現(xiàn)

    本文探討了在64位環(huán)境下調用32位C++ DLL的的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-07-07
  • 利用go語言編寫一個并發(fā)包

    利用go語言編寫一個并發(fā)包

    這篇文章主要為大家詳細介紹了如何利用go語言編寫一個并發(fā)包,適合大部分并發(fā)任務,開箱即用,文中的示例代碼講解詳細,有需要的小伙伴可以參考下
    2023-10-10
  • Go讀取文件與寫入文件的三種方法操作指南

    Go讀取文件與寫入文件的三種方法操作指南

    在 Go 語言中也經(jīng)常會遇到操作文件的需求,下面這篇文章主要給大家介紹了關于Go讀取文件與寫入文件的三種方法操作,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • golang jsoniter extension 處理動態(tài)字段的實現(xiàn)方法

    golang jsoniter extension 處理動態(tài)字段的實現(xiàn)方法

    這篇文章主要介紹了golang jsoniter extension 處理動態(tài)字段的實現(xiàn)方法,我們使用實例級別的 extension, 而非全局,可以針對不同業(yè)務邏輯有所區(qū)分,jsoniter 包提供了比較完善的定制能力,通過例子可以感受一下擴展性,需要的朋友可以參考下
    2023-04-04
  • GO中Json解析的幾種方式

    GO中Json解析的幾種方式

    本文主要介紹了GO中Json解析的幾種方式,詳細的介紹了幾種方法,?文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-01-01
  • Go語言strings.Repeat中5個高效用法(附性能對比)

    Go語言strings.Repeat中5個高效用法(附性能對比)

    本文深入探討Go語言中strings.Repeat的5個高效用法,包括CLI工具視覺增強、測試數(shù)據(jù)生成、文本對齊優(yōu)化、二進制協(xié)議處理及性能優(yōu)化場景,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧
    2026-03-03
  • Go語言基礎學習教程

    Go語言基礎學習教程

    這篇文章主要介紹了Go語言基礎知識,包括基本語法、語句、數(shù)組等的定義與用法,需要的朋友可以參考下
    2016-07-07
  • Golang Cron 定時任務的實現(xiàn)示例

    Golang Cron 定時任務的實現(xiàn)示例

    這篇文章主要介紹了Golang Cron 定時任務的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-05-05
  • Go手寫數(shù)據(jù)庫ZiyiDB的實現(xiàn)

    Go手寫數(shù)據(jù)庫ZiyiDB的實現(xiàn)

    本文主要介紹了Go手寫數(shù)據(jù)庫ZiyiDB的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-05-05
  • Golang interface{}的具體使用

    Golang interface{}的具體使用

    interface{}是Go中可以表示任意類型的空接口,本文主要介紹了Golang interface{}的具體使用,具有一定的參考價值,感興趣的可以了解一下
    2025-05-05

最新評論

武夷山市| 论坛| 将乐县| 郧西县| 水富县| 廊坊市| 嘉祥县| 都匀市| 大理市| 涞水县| 泰来县| 龙井市| 马鞍山市| 古蔺县| 楚雄市| 鹤峰县| 洪江市| 通州市| 古交市| 五峰| 康马县| 汕头市| 苍南县| 赤峰市| 华池县| 贵港市| 黑山县| 洛扎县| 枣阳市| 浮山县| 阳春市| 清苑县| 利川市| 基隆市| 牟定县| 阿拉善盟| 阿克陶县| 琼结县| 芜湖县| 玛沁县| 祁东县|