【问题标题】:How to turn wireless radio on/off in Windows? [closed]如何在 Windows 中打开/关闭无线电? [关闭]
【发布时间】:2016-06-09 19:51:02
【问题描述】:

我正在寻找一种 API 以在 Windows 中以编程方式打开和关闭无线电,就像以下 Windows 10 UI 元素所做的那样:

  • 需要打开/关闭 Wi-Fi、蓝牙或移动宽带
  • 适用于 Windows 7、8 和 10
  • 这不是电话
  • C#/.NET4.5 是理想的,但 C++/Win32 也可以工作

【问题讨论】:

    标签: c# c++ .net winapi wdk


    【解决方案1】:

    对于 Windows 10,您可以使用 Radio Manager API 来控制不同的无线电状态。您可以找到完整的sample apps here(C# 和 C++)。

    首先,您需要访问所有系统无线电。这必须在 UI 线程中调用:

    var accessLevel = await Radio.RequestAccessAsync();
    

    然后,您可以找到系统上的所有无线电(示例描述了访问无线电的其他方式):

    var radios = await Radio.GetRadiosAsync();
    

    给定一个无线电对象,您可以通过以下方式更改状态:

    Radio radio = SOME_RADIO;
    radio.StateChanged = Radio_StateChangedCallback; // Called when the radio state completes the change
    radio.SetStateAsync(RadioState.On); // Or RadioState.Off
    

    【讨论】:

    • 非常感谢!不幸的是,我也必须支持 Win8,而您的示例是仅限 Win10 的通用应用程序。 (如果我理解正确的话):(
    • 是的,我很确定这仅适用于 Windows 10。不过,post 可能对 8.1 有所帮助!我希望至少能让你参与其中:)
    【解决方案2】:

    所以一般来说,您需要做的是枚举网络适配器(过滤掉无线、蓝牙和移动宽带)并切换它们的状态?

    难怪有 3 票接近,因为 SO 充满了相关的问题和答案:

    • This 演示 C# + WMI
    • This 演示C++ + WINAPI 设备安装API

    其中一个应该是一个公平的起点,可以把你需要的东西放在一起。

    【讨论】:

    • 我没有问如何禁用网络设备,我问的是如何切换收音机——差别很大。当您在 Windows UI 中切换开关时(参见屏幕截图),设备不会从 Windows 中删除(即从设备管理器中),该开关只是打开/关闭无线电。您提到的所有示例都在禁用设备。
    • @WilliamLeara 我可能错了,但既然你提到了 Windows 7 - 它甚至区分启用/禁用设备和打开和关闭无线电吗?并且禁用设备不会将其删除,它的作用与您从控制面板的上下文菜单中禁用它的作用相同。 Windows 8 及更高版本当然提供 API 来打开/关闭无线电,但如果您需要 Windows 7 兼容性,那么我不确定是否有比禁用设备更好的方法。
    【解决方案3】:

    我知道你可以用

    操作无线连接

    netsh interface set interface name="Local Area Connection" 通过 cmd 行。

    所以也许在 c# 中你可以使用Process.Start("netsh", "set name=\"Local Area Connection\""); 来更改 wifi 设置。我相信你可以下载一个蓝牙命令行实用程序并用它做类似的事情。

    稍后我可以在我的 Windows 机器上进行测试,但我现在不能,希望这会有所帮助。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2019-10-05
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多