专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > C++ Builder

怎么获取无线网络信号强度

发布时间:2011-06-28 14:05:27 文章来源:www.iduyao.cn 采编人员:星星草
如何获取无线网络信号强度。
获取上网本WIFI的信号强度,知道的给点源码参考一下。。谢谢

------解决方案--------------------
利用 RConnectionMonitor 类。
C/C++ code

  //connect

   RConnectionMonitor monitor;
   monitor.ConnectL();
   CleanupClosePushL(monitor);
   TRequestStatus status;
   TInt iSignalStrength;

   //get all wifi packets
   TPckgBuf<TConnMonNetworkNames> pkgNetworks;
   monitor.GetPckgAttribute(EBearerIdWLAN, 0, KNetworkNames, pkgNetworks, status);
   User::WaitForRequest(status);
   TInt packetCount = pkgNetworks().Count();

    //find ssid in packets

   TBuf16<36> ssid16;
   ssid16.Copy(pkgNetworks().iNetwork[0].iName);

 //get signal strength
   iSignalStrength = (TInt) pkgNetworks().iNetwork[0].iSignalStrength;

------解决方案--------------------
关键时候, 还是我来吧!

M$已经提供了相应的wlanapi, 在2009/2010中直接使用就行了:
C/C++ code
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    DWORD dwError = ERROR_SUCCESS;
    DWORD dwNegotiatedVersion;
    HANDLE hClientHandle = NULL;

    dwError = WlanOpenHandle(WLAN_API_VERSION_1_0, NULL, &dwNegotiatedVersion, &hClientHandle);
    if (dwError != ERROR_SUCCESS)
        return;

    PWLAN_INTERFACE_INFO_LIST pInterfaceList = NULL;
    dwError = WlanEnumInterfaces(hClientHandle, NULL,&pInterfaceList);
    if ( dwError != ERROR_SUCCESS )
    {
        WlanFreeMemory(pInterfaceList);
        return;
    }

    GUID &guid = pInterfaceList->InterfaceInfo[0].InterfaceGuid;
    PWLAN_AVAILABLE_NETWORK_LIST pWLAN_AVAILABLE_NETWORK_LIST = NULL;

    dwError = WlanGetAvailableNetworkList(hClientHandle, &guid,
            WLAN_AVAILABLE_NETWORK_INCLUDE_ALL_MANUAL_HIDDEN_PROFILES,
            NULL, &pWLAN_AVAILABLE_NETWORK_LIST);
    if (dwError != ERROR_SUCCESS)
    {
        WlanFreeMemory(pInterfaceList);
        WlanFreeMemory(pWLAN_AVAILABLE_NETWORK_LIST);
        return;
    }
    if (pWLAN_AVAILABLE_NETWORK_LIST->dwNumberOfItems > 0)
    {
        wchar_t sz[256] = { 0 };

        WLAN_AVAILABLE_NETWORK wlanAN = pWLAN_AVAILABLE_NETWORK_LIST[0].Network[0];

        wsprintfW(sz, L"%s:%d", wlanAN.strProfileName, wlanAN.wlanSignalQuality);
        Memo1->Lines->Add(sz);
    }

    WlanFreeMemory(pInterfaceList);
    WlanFreeMemory(pWLAN_AVAILABLE_NETWORK_LIST);
}
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: