c# - 我们如何以编程方式更改无线蓝牙 radio 电源管理 C#

标签 c# wpf bluetooth windows-7 power-management

我在使用使用外部蓝牙设备的应用程序时遇到问题。当设备闲置一段时间时 Windows 打开蓝牙 radio 的电源。当我取消选中蓝牙 radio 的电源管理选项卡下的[允许计算机关闭此设备以节省电量。] 它可以工作。参见图片。 同样需要通过 C# 代码来实现。从Win7开始需要这样做。 Power Management Option 我不熟悉 Windows C# 的电源管理选项。我在这里有什么选择?是否有我可以使用的事件或 WMI 类?

当我的 WPF 应用程序运行时,我应该能够更改这些设置。并在关闭时恢复它。

最佳答案

您可以使用 C# 中的 WMI 轻松完成此操作。确保添加对 System.Management 的引用(以及 using System.Management; 语句)

    //BTHUSB will identify physical bluetooth adapters only, if you want all bluetooth devices use 'WHERE PNPClass='Bluetooth' or specific device 'WHERE Name='Intel(R) Wireless Bluetooth(R)'
    ManagementObjectCollection PhysicalBluetoothAdapterResults = new ManagementObjectSearcher("root\\CIMV2", "SELECT DeviceID FROM Win32_PnPEntity WHERE Service='BTHUSB'").Get();
    foreach(ManagementObject PhysicalBluetoothAdapter in PhysicalBluetoothAdapterResults)
    {
        string DeviceID = PhysicalBluetoothAdapter.Properties["DeviceID"].Value.ToString().Replace("\\","\\\\");
        ManagementObjectCollection AdapterPowerOptionResults = new ManagementObjectSearcher("root\\WMI", $"SELECT * FROM MSPower_DeviceEnable WHERE InstanceName LIKE '{DeviceID}_%'").Get();
        foreach(ManagementObject AdapterPowerOption in AdapterPowerOptionResults)
        {
            AdapterPowerOption.Properties["enable"].Value = false;
            AdapterPowerOption.Put();
        }
    }

希望这有帮助。

-保罗

关于c# - 我们如何以编程方式更改无线蓝牙 radio 电源管理 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57620672/

相关文章:

html - 在 WPF 中显示 HTML 内容

android - 如何设置蓝牙媒体音量值

c# - 你怎么 'adapt'一个类成员就是一个集合?

c# - WPF 组合框以编程方式隐藏(禁用)下拉按钮

c# - RabbitMQ - 如何配置条件 DLX?

wpf - 将 wpf 验证规则应用于自定义用户控件内的文本框

BluetoothAdapter.isEnabled() 上的 Java NullPointerException

bluetooth - 在 Linux 上发送和接收蓝牙低功耗 (BLE) 原始数据包

c# - 这段代码能正确判断两种类型是否相等吗?

c# - 合并两个列表列表