0

ここで指定された現在のWiFi信号強度値を返す関数を使用しています:http: //www.dotnet247.com/247reference/msgs/42/211278.aspx

Visual Studio 2008でコードを実行すると、コンパイルエラーが発生します。

名前空間のタイプ'ManagementObjectSearcher'が見つかりません。

'usingSystem.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キーワードです。変数の名前をobjまたはoに変更してみて、それが機能するかどうかを確認してください。

参考までに、非常に古い構文上のトリックを使用してc#コードをコンパイルしていると思います。そして、これが本当にc#であるかどうかを判断しようとすると、多くの人が失望していると思います。

ポインタ構文はおそらく必要ありません。ManagementObjectSearcherはSystem.Management名前空間の一部であるため、安全でないポインター構文なしで安全に使用できます。

また、なぜ名前空間エイリアス修飾子::)を使用しているのですか?ドット演算子を直接使用するのが安全です(ManagementObjectCollection.ManagementObjectEnumerator)。実際、ポインタ構文の代わりに、ここではどこでもドット演算子を使用しても安全です。

于 2012-08-15T14:26:16.400 に答える