我正在使用函数返回此处给出的当前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()));
}
答案 0 :(得分:1)
我为C#找到的东西就像在MSDN上一样:http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/34a66ee5-34f8-473d-b6f2-830a14e2300b/
仔细阅读。您似乎正在使用或已经改编了C ++ CLR代码。你的代码似乎差不多正确。
答案 1 :(得分:1)
要回答您的问题,您不能将object
用作变量名称。 object
是关键字。尝试将变量重命名为obj
或o
,看看是否有效。
为了进一步参考,我认为你正在使用一些非常古老的语法技巧来编译c#代码。而且我认为这会让很多人试图确定这是否真的是c#。
指针语法可能不是必需的。 ManagementObjectSearcher是System.Management命名空间的一部分,因此在没有不安全指针语法的情况下可以安全使用。
另外,为什么使用namespace alias qualifier(::
)?直接使用点运算符应该是安全的(ManagementObjectCollection.ManagementObjectEnumerator)。实际上,在这里使用点运算符而不是指针语法应该是安全的。