Windows 系统代理可以通过窗口鼠标点击开关进行配置,也可以通过命令行进行设置。
鼠标操作:
命令行操作:
reg add "HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable /t REG_DWORD /d 0x1 /f
reg add "HKEY_CURRENT_USERSOFTWAREMicrosoftWindowsCurrentVersionInternet Settings" /v ProxyEnable /t REG_DWORD /d 0x0 /f
如果希望更简单一点,那就需要为其设置快捷键了。在网上找到了实现方法,方法是为 bat 脚本创建快捷方式,然后在快捷方式中设置热键。
这种方法有用,但执行效率比较低。从呼出快捷键到命令执行大概需要1~2秒钟。如果没有关掉命令行的输出,在热键执行时能看到 bat 脚本的弹出过程。就是可以看到一个黑黑的窗口在热键执行后的1~2秒钟一闪而过。
在实际测试中,这种方式的延迟感也比较严重,“快”键变成了“慢”键,还不如直接敲命令快。
有没有什么方法可以优化一下快捷键的响应速度。
答案是有,通过 python 注册全局热键,然后通过热键绑定响应动作即可。这里快捷键选用了 F7、F8,F7用来激活系统代理,F8用来禁用系统代理。
Python 代码如下:
import keyboard
import winreg
def enable_proxy():
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'SOFTWAREMicrosoftWindowsCurrentVersionInternet Settings', 0,
winreg.KEY_ALL_ACCESS)
value, regtype = winreg.QueryValueEx(key, 'ProxyEnable')
if value != 1:
winreg.SetValueEx(key, 'ProxyEnable', 0, winreg.REG_DWORD, 1)
value, regtype = winreg.QueryValueEx(key, 'ProxyEnable')
# print(value, regtype)
print(f'Enable proxy: {value}', flush=True)
def disable_proxy():
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, r'SOFTWAREMicrosoftWindowsCurrentVersionInternet Settings', 0,
winreg.KEY_ALL_ACCESS)
value, regtype = winreg.QueryValueEx(key, 'ProxyEnable')
if value != 0:
winreg.SetValueEx(key, 'ProxyEnable', 1, winreg.REG_DWORD, 0)
value, regtype = winreg.QueryValueEx(key, 'ProxyEnable')
# print(value, regtype)
print(f'Disable proxy: {value}', flush=True)
if __name__ == '__main__':
hotkey_f7 = 'f7'
hotkey_f8 = 'f8'
# 尝试移除已占用的热键
# keyboard.remove_hotkey(hotkey_f7)
# keyboard.remove_hotkey(hotkey_f8)
# 注册新的热键
keyboard.add_hotkey(hotkey_f7, enable_proxy)
keyboard.add_hotkey(hotkey_f8, disable_proxy)
print("注册F7、F8 为 proxy 的热键, 按 ESC 退出。", flush=True)
keyboard.wait('esc') # 等待 ESC 键退出
使用方法:先 pip insall keyboard 安装依赖,其中 winreg 模块是 windows 版本的 python 库自带的,不用安装。
程序运行后不要叉掉,注册的热键是全局热键,不需要聚焦到当前程序所在窗口,但当程序被叉掉后热键会被释放。换句话说就是,热键只在程序运行时生效,程序退出后热键失效。通过程序输出也可以查看热键的执行是否符合预期。
程序运行效果如下:
当输入 ESC(ESC 也是全局热键) 时程序正常退出,热键被释放。
如果需要跨主机使用,免除安装 python 环境的麻烦,可以通过 pyinstaller 打包成 EXE 可执行文件,打包命令为:
pyinstaller --onefile main.py
注意
修改注册表需要管理员权限,在执行时需要右键以管理员权限运行。
全文完。
原文始发于微信公众号(生有可恋):为Windows系统代理设置热键
- 左青龙
- 微信扫一扫
- 右白虎
- 微信扫一扫
评论