欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python编写炉石传说断网整活桌面工具源码(附下载可用exe程序)

程序员文章站 2022-07-03 09:09:20
...

实现思路:

1. 直接使用[baiipconfig/release]释放当前ip,然后再使用[ipconfig/renew]重新获取ip,从而实现断网重连的需求,奈何经过测试,断网重连之后,当场去世

2. 通过将指定程序加入到防火墙规则,开启/关闭规则,实现断网重连的需求,经过测试,可行

 

备注:

1. 需要关闭电脑管家等安全工具,否则会提示病毒

2. 首次使用,需要找到指定的软件的exe路径,并点击生成,默认断网(生成之后下次使用不用再次重复此步骤)

3. 脚本打包方法入口:跳转

代码如下:

from tkinter import *
from tkinter.filedialog import askopenfilename
import os
import tkinter
'''
断网重连工具下载:链接:https://pan.baidu.com/s/1R2jhdQPTuGB-gwIxMu_SHg  提取码:aw7s 
'''


class Gui(object):
    def __init__(self):
        self.root = tkinter.Tk()
        self.path = StringVar()
        # 禁止拖动窗口大小
        self.root.resizable(width=False, height=False)
        # 强制显示在所有页面的最顶层
        self.root.attributes("-topmost", True)
        # 去掉边框
        self.root.overrideredirect(1)
        self.root.geometry("170x200+10+10")
        # 选择路径
        self.entry_yj = tkinter.Entry(master=self.root, textvariable=self.path, width=22)
        self.entry_yj.grid(rowspan=2, columnspan=4)
        # 按钮控件
        Button(self.root, text="选择程序", command=self.select_path, width=10, relief=RIDGE).grid(row=2, column=1)
        self.button_tj = tkinter.Button(master=self.root, text='生成', command=self.add,
                                        relief=RIDGE, width=10, cursor='sizing')
        self.button_tj.grid(row=2, column=2)
        self.button_tj = tkinter.Button(master=self.root, text='断网', command=off,
                                        relief=RIDGE, width=10, height=5, cursor='sizing')
        self.button_tj.grid(row=3, column=1)
        self.button_tj = tkinter.Button(master=self.root, text='联网', command=reconnection,
                                        width=10, height=5, cursor='sizing', relief=RIDGE)
        self.button_tj.grid(row=3, column=2)
        self.button_tj = tkinter.Button(master=self.root, text='关闭工具', command=self.turn,
                                        width=22, height=2, cursor='tcross', relief=RIDGE)
        self.button_tj.grid(rowspan=4, columnspan=4)
        self.root.mainloop()

    def turn(self):
        self.root.destroy()

    def select_path(self):
        path_ = askopenfilename()
        self.path.set(path_)
        return path_

    def add(self):
        # 需要将将文件路径的/替换为\,否则命令提示违规
        add(self.entry_yj.get().replace('/', '\\'))


def add(path):
    os.system(r'netsh advfirewall firewall add rule name="hh_ldp"  dir=out'
              r'  program="{}"  action=block'.format(path))


def off():
    os.system('netsh advfirewall firewall set rule name="hh_ldp" new enable=yes')


def reconnection():
    os.system('netsh advfirewall firewall set rule name="hh_ldp" new enable=no')


if __name__ == '__main__':
    Gui()