为Windows系统代理设置热键

admin 2024年10月31日12:52:40评论6 views字数 2052阅读6分50秒阅读模式

Windows 系统代理可以通过窗口鼠标点击开关进行配置,也可以通过命令行进行设置。


鼠标操作:

为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 脚本创建快捷方式,然后在快捷方式中设置热键。

为Windows系统代理设置热键

这种方法有用,但执行效率比较低。从呼出快捷键到命令执行大概需要1~2秒钟。如果没有关掉命令行的输出,在热键执行时能看到 bat 脚本的弹出过程。就是可以看到一个黑黑的窗口在热键执行后的1~2秒钟一闪而过。

在实际测试中,这种方式的延迟感也比较严重,“快”键变成了“慢”键,还不如直接敲命令快。

有没有什么方法可以优化一下快捷键的响应速度。

答案是有,通过 python 注册全局热键,然后通过热键绑定响应动作即可。这里快捷键选用了 F7、F8,F7用来激活系统代理,F8用来禁用系统代理。

Python 代码如下:

import keyboardimport winregdef 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 键退出

为Windows系统代理设置热键

使用方法:先 pip insall keyboard 安装依赖,其中 winreg 模块是 windows 版本的 python 库自带的,不用安装。

程序运行后不要叉掉,注册的热键是全局热键,不需要聚焦到当前程序所在窗口,但当程序被叉掉后热键会被释放。换句话说就是,热键只在程序运行时生效,程序退出后热键失效。通过程序输出也可以查看热键的执行是否符合预期。

程序运行效果如下:

为Windows系统代理设置热键

当输入 ESC(ESC 也是全局热键) 时程序正常退出,热键被释放。

如果需要跨主机使用,免除安装 python 环境的麻烦,可以通过 pyinstaller 打包成 EXE 可执行文件,打包命令为:

pyinstaller --onefile main.py

注意

修改注册表需要管理员权限,在执行时需要右键以管理员权限运行。

全文完。

原文始发于微信公众号(生有可恋):为Windows系统代理设置热键

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年10月31日12:52:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   为Windows系统代理设置热键http://cn-sec.com/archives/3337876.html

发表评论

匿名网友 填写信息