【问题标题】:How to check/switch the airplane mode programmatically in Windows 8?如何在 Windows 8 中以编程方式检查/切换飞行模式?
【发布时间】:2012-07-25 04:09:09
【问题描述】:

我必须检查是否在 Windows 8 中启用了飞行模式,并可能切换其状态。我目前正在开发一个 C# .NET 4.0 Windows Forms 应用程序,但这个问题的答案不应受此限制。

【问题讨论】:

  • 这不是为什么通过 Winkey+I 栏提供非常快速的访问吗?
  • @Deanna 我需要以编程方式访问它

标签: winapi windows-8 wireless airplane


【解决方案1】:

不幸的是,Metro 应用程序无法通过编程方式更改 Windows 8 中的飞行模式。如果应用程序在未经用户许可的情况下超出其沙箱并修改此类系统设置,这违反了 Metro 指南(请参阅讨论http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/1ad10725-b1b8-4723-b2c3-861900809e02)。

现在,您可以使用Windows.Networking.NetworkOperators namespace 中的一些功能来确定状态。具体来说,查看MobileBroadbandRadioStateNetworkDeviceStatus 枚举。

或者,您可以通过说明如何使用 Windows 键 + I、更改 PC 设置、无线、飞行模式访问设置来提示用户进行更改。

【讨论】:

  • 即使在开发传统桌面应用程序时,我是否也受到 Metro 指南的约束?
  • 不,Metro 指南仅适用于 Metro 应用程序,不适用于传统桌面应用程序。
  • 所以你是说虽然 Metro 应用程序不能以编程方式切换飞行模式,但桌面应用程序可能可以。
  • 假设你在飞机上,一个程序可以自动关闭飞行模式。你真的想拥有这样的程序吗?我认为微软不会提供可以改变飞行模式的 API。
【解决方案2】:

这是获取 NetworkConnectivityLevel 的代码 sn-p,它可能会为您提供您需要知道的信息。不知道有没有办法改变。我会怀疑它,因为您还需要提供一种方法来选择要连接的网络。

    public static NetworkConnectivityLevel GetNetworkConnectivityLevel()
    {
        ConnectionProfile profile = NetworkInformation.GetInternetConnectionProfile();

        var ncl = NetworkConnectivityLevel.None;

        if (profile != null)
        {
            ncl = profile.GetNetworkConnectivityLevel();
        }

        return ncl;
    }

【讨论】:

    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多