私のプログラムでは、システムから WiFi 強度の値を取得しようとしています。必要な値を取得したら、それを Windows フォームのテキスト ボックスに表示しようとしています。これまでのところ、必要なテキスト ボックスに値を表示することはできません。どうすればこれを達成できるかについての洞察が必要です。生の rssi 値を取得する関数の呼び出しは、タイマー ループ内にあります。
*この Wi-Fi 強度のコードは、このサイトの寄稿者によって提供されたことに注意してください。それは私のものではありません。
public static int GetSignalStrengthAsInt()
{
Int32 returnStrength = 0;
ManagementObjectSearcher searcher = null;
try
{
searcher = new ManagementObjectSearcher(
@"root\WMI",
@"select Ndis80211ReceivedSignalStrength
from MSNdis_80211_ReceivedSignalStrength
where active=true" );
// Call the get in order to populate the collection
ManagementObjectCollection adapterObjects = searcher.Get();
// Loop though the management object and pull out the signal strength
foreach ( ManagementObject mo in adapterObjects )
{
returnStrength = Convert.ToInt32(
mo["Ndis80211ReceivedSignalStrength"].ToString());
break;
}
}
catch (Exception)
{
}
finally
{
if ( searcher != null )
{
searcher.Dispose();
}
}
return returnStrength;
}
//**********************PROBLEM AREA BELOW************************************
void timer_Tick(object sender, EventArgs e) //not working
{
GetSignalStrengthAsInt();
wifi.Text = returnStrength; // unclear how to get returnStrength in wifi box
...
}
テキストボックスの名前は「wifi」です。私はある種のスコーピングの問題を抱えていると思います。