检查无线适配器是否开启/存在于C#中

3

我在我的C#应用程序中使用ManagedWifi。该应用程序将接管并连接到指定的SSID。现在我正在尝试处理所有可能的错误,特别是这个。目前,程序无法确定无线适配器是否已打开/甚至根本不存在。ManagedWifi代码按照正常方式继续运行,没有抛出任何异常。感谢您的帮助。

2个回答

4
WLAN API是你的朋友。特别地,查看WlanQueryInterface文档中的示例。请注意,许多笔记本电脑都有一个wifi适配器的开关,当此开关关闭时,适配器在Windows中将完全不可见。
我知道WMI也可以用于做一些WIFI的事情,但我不确定它是否能像WLAN API一样枚举适配器并发现它们的属性。
编辑添加:请注意Windows 7虚拟适配器的存在,当我第一次遇到它时,它让我写wifi控制应用程序出了点问题。

我查询了 WLAN_RADIO_STATE(在 ManagedWifi 中为 WlanClient.WlanInterface.RadioState),并通过检查 PhyRadioState[0].dot11SoftwareRadioState 和 PhyRadioState[0].dot11HardwareRadioState 的状态来获取无线适配器是否已打开或关闭的指示器(在 C# ManagedWIfi 中为 WlanInterface.RadioState.PhyRadioState[0].dot11SoftwareRadioState 和 WlanInterface.RadioState.PhyRadioState[0].dot11HardwareRadioState)。需要注意的是,我们必须同时检查硬件和软件,因为在笔记本电脑中,物理开关是硬件开关,而快捷键(通常为 Fn+F2)是软件开关。 - Zekareisoujin
你可以更新你的答案,提供更多信息,并为这个问题投票,以帮助那些需要它的人 =D。 - Zekareisoujin

0

WMI 可能是查询您正在寻找的信息的最佳方式


请问能详细说明一下我该如何在我的应用程序中使用WMI吗? - Zekareisoujin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接