连接公司wifi后自动静音,连接家庭wifi或者有线网络后自动取消静音

介绍:你可以在 Python 脚本中指定多个 WiFi 网络,分别定义为“静音”或“取消静音”状态。脚本会检测当前连接的 WiFi,如果连接上属于“静音”的网络,就静音;如果连接上属于“取消静音”的网络,就恢复声音。

前置条件 -- 有python环境

安装python环境 参考链接:https://blog.csdn.net/sensen_kiss/article/details/141940274

第一步:安装必要的 Python 库  注:pip install pywifi pycaw comtypes 前面为python的解释器路径

D:/JAVA/Python3.12.5/python.exe -m pip install pywifi pycaw comtypes

第二步:编写脚本  注:.py.pyw 文件的主要区别在于运行时是否显示控制台窗口。 

wifi_mute_control.pyw
import subprocess
import psutil
from pycaw.pycaw import AudioUtilities, IAudioEndpointVolume
from comtypes import CLSCTX_ALL
from ctypes import POINTER, cast

# 指定的 WiFi 名称列表
MUTE_WIFI_LIST = ["afkj001_5G", "佳运出行"]         # 连接这些 WiFi 时静音
UNMUTE_WIFI_LIST = ["xD", "Unmute_Wifi_2"]          # 连接这些 WiFi 时取消静音

# 静音和取消静音功能,检查当前状态再操作
def mute_system():
    devices = AudioUtilities.GetSpeakers()
    interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
    volume = cast(interface, POINTER(IAudioEndpointVolume))
    current_mute_status = volume.GetMute()
    if not current_mute_status:
        print("系统正在静音...")
        volume.SetMute(1, None)
    else:
        print("系统已处于静音状态。")

def unmute_system():
    devices = AudioUtilities.GetSpeakers()
    interface = devices.Activate(IAudioEndpointVolume._iid_, CLSCTX_ALL, None)
    volume = cast(interface, POINTER(IAudioEndpointVolume))
    current_mute_status = volume.GetMute()
    if current_mute_status:
        print("系统正在取消静音...")
        volume.SetMute(0, None)
    else:
        print("系统已处于非静音状态。")

# 使用 Windows 命令获取当前连接的 WiFi 名称
def get_connected_wifi():
    try:
        result = subprocess.check_output(["netsh", "wlan", "show", "interfaces"], encoding="mbcs")
        for line in result.splitlines():
            if "SSID" in line and "BSSID" not in line:
                ssid = line.split(":")[1].strip()
                print(f"当前连接的 WiFi SSID:{ssid}")
                return ssid
    except subprocess.CalledProcessError as e:
        print(f"获取 WiFi SSID 失败: {e}")
    except UnicodeDecodeError as e:
        print(f"读取 WiFi SSID 时发生编码错误: {e}")
    return None

# 检查是否连接到有线网络
def is_ethernet_connected():
    for iface, addrs in psutil.net_if_addrs().items():
        if "Ethernet" in iface or "以太网" in iface:
            for addr in addrs:
                if addr.family == 2:  # AF_INET 表示 IPv4 地址
                    print(f"检测到有线连接:{iface}")
                    return True
    return False

# 主函数
def main():
    connected_wifi = get_connected_wifi()
    if connected_wifi:
        print(f"检测到 WiFi:{connected_wifi}")
        if connected_wifi in MUTE_WIFI_LIST:
            print(f"{connected_wifi} 在静音列表中,系统正在静音...")
            mute_system()
        elif connected_wifi in UNMUTE_WIFI_LIST:
            print(f"{connected_wifi} 在取消静音列表中,系统正在取消静音...")
            unmute_system()
        else:
            print(f"连接到 {connected_wifi},无需操作。")
    elif is_ethernet_connected():
        print("检测到有线网络连接,系统正在取消静音...")
        unmute_system()
    else:
        print("未连接到任何 WiFi 或有线网络。")

if __name__ == "__main__":
    main()

第三步:设置任务计划程序(自动化)

步骤 1:打开任务计划程序

  1. 按下 Win + S 键,搜索“任务计划程序”(Task Scheduler),并打开它。
  2. 在左侧导航栏中,右键单击“任务计划程序库”并选择“创建任务”。

步骤 2:创建任务

  1. 常规 选项卡:

    • 在“名称”字段中输入任务的名称(例如,“自动静音控制”)。
    • 选中“使用最高权限运行”选项,以确保任务在后台运行时拥有足够的权限。
  2. 触发器 选项卡:

    • 点击“新建”来添加一个触发器。
    • 从下拉菜单中选择 “工作站解锁” 作为触发条件,这样每次解锁计算机时都会运行该脚本。
    • 你也可以选择 “事件” 触发类型来监控网络状态变化,具体步骤如下:
      • 触发器类型 选择“在事件中触发”。
      • 选择以下设置:
        • 日志:Microsoft-Windows-NetworkProfile/Operational
        • 源:NetworkProfile
        • 事件 ID:10000(表示网络已连接)
      • 点击“确定”保存触发器。

    注意10001 的事件 ID 表示网络已断开连接,你可以根据需求设置多个触发器(连接网络时静音,断开网络时取消静音)。

  3. 操作 选项卡:

    • 点击“新建”来添加操作。

    • 在“操作”下拉菜单中选择 “启动程序”

    • 在“程序或脚本”字段中,输入你的 Python 解释器的路径,例如: (修改为你的python解释器路径)

       
      D:\JAVA\Python3.12.5\pythonw.exe
    • 在“添加参数”字段中,输入你的脚本路径,例如: (修改为你的python脚本路径)

       
      D:\WorkSpace\Python-script\wifi_mute_control.pyw
    • 点击“确定”保存操作。

  4. 条件 选项卡:

    • 你可以勾选“仅在计算机使用交流电源时启动”以减少电池电量消耗,但这不是必须的。
  5. 设置 选项卡:

    • 确保“如果任务失败,重新启动间隔”选项勾选,以便在失败时尝试重新运行任务。
    • 其他选项可以保持默认设置。

步骤 3:测试任务

  1. 完成设置后,点击“确定”保存任务。
  2. 右键单击任务,并选择“运行”以手动触发任务,确保脚本能够正常运行。
  3. 锁定计算机并解锁,或连接到指定的 WiFi,查看是否自动静音或取消静音。
posted @ 2024-10-29 11:11  xd99  阅读(4)  评论(0编辑  收藏  举报