0

我正在使用一个函数来返回此处给出的当前 WiFi 信号强度值:http: //www.dotnet247.com/247reference/msgs/42/211278.aspx

在 Visual Studio 2008 中运行代码时,出现编译错误:

找不到命名空间“ManagementObjectSearcher”的类型。

我正在使用“使用 System.Manangement”

我的总体目标是获取信号强度并将其插入 Windows 窗体上的文本框中,所以一旦我使用下面的函数获取值,我只需将其弹出到框中供用户查看。

知道为什么我会收到这些错误吗?

代码:

 public static void signalStrentgh()
        {
           ManagementObjectSearcher searcher = new  
           ManagementObjectSearcher(@"root\WMI", "select 
           Ndis80211ReceivedSignalStrength from MSNdis_80211_ReceivedSignalStrength 
           where active=true");

            foreach (ManagementObject mo in searcher.Get())
            {
                Console.WriteLine("{0}", mo["Ndis80211ReceivedSignalStrength"]);
            }
        }

注意* 下面发布的是旧的、不正确的代码版本,用 C++ 完成。这是参考评论和帮助。

int GetSignalStrength()
{
  ManagementObjectSearcher *searcher = new ManagementObjectSearcher(
  "root\\WMI",
  "select Ndis80211ReceivedSignalStrength from
  MSNdis_80211_ReceivedSignalStrength where active=true");

  ManagementObjectCollection *queryCollection = searcher->Get();

  ManagementObjectCollection::ManagementObjectEnumer ator* queryEnum =
  queryCollection->GetEnumerator();
  while (queryEnum->MoveNext());

  ManagementBaseObject* object = queryEnum->get_Current();
  Object* signalStrength =
  object->GetPropertyValue(L"Ndis80211ReceivedSignalStrengt h");
  return (Convert::ToInt32(signalStrength->ToString()));
}
4

2 回答 2

1

我为 C# 找到的东西类似于 MSDN:http ://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/34a66ee5-34f8-473d-b6f2-830a14e2300b/

仔细阅读。看来您正在使用或已改编 C++ CLR 代码。您的代码似乎几乎是正确的。

于 2012-08-15T14:13:32.063 回答
1

要回答您的问题,您不能将object其用作变量名。 object是一个关键字。尝试将变量重命名为objoro并查看是否有效。

为了进一步参考,我认为您正在使用一些非常古老的句法技巧编译 c# 代码。而且我认为这让很多人无法确定这是否真的是 c#。

指针语法可能不是必需的。ManagementObjectSearcher 是 System.Management 命名空间的一部分,因此在没有不安全指针语法的情况下可以安全使用。

另外,为什么要使用命名空间别名限定符( ::) ?直接使用点运算符(ManagementObjectCollection.ManagementObjectEnumerator)应该是安全的。事实上,在这里使用点运算符而不是指针语法应该是安全的。

于 2012-08-15T14:26:16.400 回答