#ifndef WIDGET_H
#define WIDGET_H
#include <QTimer>
#include <QObject>
//!
//! \brief The ShowBatteryWIFI class
//!
//! author: michael zheng
//! date: 2017.1.23
//! http: www.zhengsir.net
//!
class ShowBatteryWIFI : public QObject
{
Q_OBJECT
public:
ShowBatteryWIFI();
~ShowBatteryWIFI();
QTimer *timer ;
signals:
signalNowBattery(int number);
signalNowWifi(int number);
private:
void showBattery();
void showWIFI();
public slots:
void slotTimeout();
};
#endif // WIDGET_H
#include "showbatterywifi.h"
//#include "ui_widget.h"
#include <windows.h>
#include <wlanapi.h>
#include <QPixmap>
//! \brief ShowBatteryWIFI::ShowBatteryWIFI
//!
//! author: michael zheng
//! date: 2017.1.23
//! http: www.zhengsir.net
//!
ShowBatteryWIFI::ShowBatteryWIFI()
{
timer = new QTimer();
connect(timer,SIGNAL(timeout()),this,SLOT(slotTimeout()));
timer->start(3000);
showBattery();
showWIFI();
}
ShowBatteryWIFI::~ShowBatteryWIFI()
{
}
void ShowBatteryWIFI::slotTimeout()
{
showBattery();
showWIFI();
}
void ShowBatteryWIFI::showBattery() //电量
{
SYSTEM_POWER_STATUS systemPowerSatus;
GetSystemPowerStatus(&systemPowerSatus);
int remaindPower=(int)systemPowerSatus.BatteryLifePercent;
if(remaindPower>75)
{
signalNowBattery(4);
}
else if(remaindPower>50&&remaindPower<=75)
{
signalNowBattery(3);
}
else if(remaindPower>25&&remaindPower<=50)
{
signalNowBattery(2);
}
else if(remaindPower>10&&remaindPower<=25)
{
signalNowBattery(1);
}
else
{
signalNowBattery(0);
}
}
void ShowBatteryWIFI::showWIFI()
{
DWORD dwError = ERROR_SUCCESS;
DWORD dwNegotiatedVersion;
HANDLE hClientHandle = NULL;
dwError = WlanOpenHandle(1, NULL, &dwNegotiatedVersion, &hClientHandle);
if (dwError != ERROR_SUCCESS)
{
WlanCloseHandle(hClientHandle,NULL);
return;
}
PWLAN_INTERFACE_INFO_LIST pInterfaceList = NULL;
dwError = WlanEnumInterfaces(hClientHandle, NULL,&pInterfaceList);
if ( dwError != ERROR_SUCCESS )
{
WlanFreeMemory(pInterfaceList);
WlanCloseHandle(hClientHandle,NULL);
return;
}
GUID &guid = pInterfaceList->InterfaceInfo[0].InterfaceGuid;
PWLAN_AVAILABLE_NETWORK_LIST pWLAN_AVAILABLE_NETWORK_LIST = NULL;
dwError = WlanGetAvailableNetworkList(hClientHandle, &guid,
2,NULL, &pWLAN_AVAILABLE_NETWORK_LIST);
if (dwError != ERROR_SUCCESS)
{
WlanFreeMemory(pInterfaceList);
WlanFreeMemory(pWLAN_AVAILABLE_NETWORK_LIST);
WlanCloseHandle(hClientHandle,NULL);
return;
}
WLAN_AVAILABLE_NETWORK wlanAN;
bool isConnected=false;
int numberOfItems = pWLAN_AVAILABLE_NETWORK_LIST->dwNumberOfItems;
if (numberOfItems > 0)
{
for(int i = 0; i <numberOfItems; i++)
{
wlanAN = pWLAN_AVAILABLE_NETWORK_LIST->Network[i];
if(wlanAN.dwFlags & 1)
{
isConnected=true;
int wifiQuality=(int)wlanAN.wlanSignalQuality;
if(wifiQuality>75)
{
signalNowWifi(4);
}
else if(wifiQuality>50&&wifiQuality<=75)
{
signalNowWifi(3);
}
else if(wifiQuality>25&&wifiQuality<=50)
{
signalNowWifi(2);
}
else if(wifiQuality>0&&wifiQuality<=25)
{
signalNowWifi(1);
}
}
}
}
if (!isConnected)
{
signalNowWifi(0);
}
WlanFreeMemory(pInterfaceList);
WlanFreeMemory(pWLAN_AVAILABLE_NETWORK_LIST);
WlanCloseHandle(hClientHandle,NULL);
}