golang实现windows下切换代理

golang实现windows下切换代理

实现很简单 主要修改注册表文件 利用walk展示页面

界面如下

1.png

2.png

package main

import (
    "github.com/lxn/walk"
    . "github.com/lxn/walk/declarative"
    "github.com/lxn/win"
    "golang.org/x/sys/windows/registry"
    "log"
)

func main() {

    var mw *walk.MainWindow
    var inTE *walk.TextEdit

    if err := (MainWindow{
        AssignTo: &mw,
        //Icon:     "img/logo.ico",
        Title:  "代理",
        Size:   Size{300, 200},
        Layout: VBox{},
        Children: []Widget{
            HSplitter{
                Children: []Widget{
                    TextEdit{AssignTo: &inTE, ReadOnly: true},
                },
            },
            PushButton{
                Text: "连接",
                OnClicked: func() {
                    status, ip := start()
                    if status {
                        inTE.SetText("连接成功\n当前IP" + ip)
                    } else {
                        inTE.SetText("连接失败")
                    }

                },
            },
            PushButton{
                Text: "关闭",
                OnClicked: func() {
                    status := editReg("0", "")
                    if status {
                        inTE.SetText("连接已关闭")
                    } else {
                        inTE.SetText("关闭失败")
                    }
                },
            },
        },
    }.Create()); err != nil {
        log.Fatal(err)
    }

    win.SetWindowLong(mw.Handle(), win.GWL_STYLE, win.GetWindowLong(mw.Handle(), win.GWL_STYLE) & ^win.WS_MAXIMIZEBOX & ^win.WS_THICKFRAME)

    mw.Run()

}

func start() (bool, string) {
    ip, port := getIp()
    status := editReg("1", ip+":"+port)
    return status, ip
}

// 获取ip
func getIp() (string, string) {
    // 自行获取ip
    return "183.88.226.50", "8080"
}

func editReg(enable, proxy string) bool {
    key, exists, err := registry.CreateKey(registry.CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", registry.ALL_ACCESS)
    if err != nil {
        log.Fatal(err)
    }
    defer key.Close()

    if !exists {
        return false
    }

    err = key.SetStringValue("ProxyEnable", enable)
    if err != nil {
        return false
    }

    err = key.SetStringValue("ProxyServer", proxy)
    if err != nil {
        return false
    }

    return true
}

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇