Функция силы сигнала WiFi с ошибками компиляции
Я использую функцию для возврата текущего значения силы сигнала WiFi, указанного здесь: http://www.dotnet247.com/247reference/msgs/42/211278.aspx
Когда я запускаю код в Visual Studio 2008, я получаю ошибки компиляции:
Тип пространства имен "ManagementObjectSearcher" не найден.
Я использую 'использование System.Manangement'
Моя основная задача - получить уровень сигнала и вставить его в текстовое поле в форме окна, поэтому, как только я возьму значение с помощью функции, приведенной ниже, я просто вставлю его в поле для просмотра пользователем.
Есть идеи, почему я получаю эти ошибки?
Код:
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()));
}
2 ответа
Чтобы ответить на ваш вопрос, вы не можете использовать object
как имя переменной. object
это ключевое слово. Попробуйте переименовать переменную в obj
или же o
и посмотрим, работает ли это.
Для дальнейшего использования, я думаю, вы компилируете код на C#, используя некоторые действительно старые синтаксические приемы. И я думаю, что это сбивает с толку многих людей, пытающихся определить, действительно ли это C#.
Синтаксис указателя, вероятно, не нужен. ManagementObjectSearcher является частью пространства имен System.Management и поэтому безопасен для использования без синтаксиса небезопасного указателя.
Кроме того, почему вы используете квалификатор псевдоним пространства имен (::
) Должно быть безопасным непосредственное использование оператора точки (ManagementObjectCollection.ManagementObjectEnumerator). На самом деле здесь должно быть безопасно использовать оператор точки вместо синтаксиса указателя.
То, что я нашел для C#, похоже на MSDN: http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/34a66ee5-34f8-473d-b6f2-830a14e2300b/
Прочитай внимательно. Кажется, вы используете или адаптировали C++ CLR-код. Ваш код кажется почти правильным.