http://www.cnblogs.com/zelda/archive/2010/09/03/1817197.html
_LIT(KNetInfo, "Network: %S/tSignal: %d");
TBuf<32> netName;
TBuf<100> line;
RConnectionMonitor monitor;
TPckgBuf<TConnMonNetworkNames> pkgNetworks;
// establish connection with the monitor server
monitor.ConnectL();
// prepare leave clean-up
CleanupClosePushL(monitor);
TRequestStatus status;
// get the list of available networks
monitor.GetPckgAttribute(EBearerIdWLAN, 0, KNetworkNames, pkgNetworks,
status);
// suspend thread until the info is retrieved
// production code should use active objects
User::WaitForRequest(status);
// leave if the asynchronous method returned an error
User::LeaveIfError(status.Int());
// reset networks list
// add retrieved networks to the list
for (TUint i = 0; i < pkgNetworks().iCount; i++)
{
netName.Copy(pkgNetworks().iNetwork[i].iName);
line.Format(KNetInfo, &netName,
pkgNetworks().iNetwork[i].iSignalStrength);
iEikonEnv->InfoWinL(line, KNullDesC);
}
// close server session
CleanupStack::PopAndDestroy(&monitor);