VC.NET: 获取网速
perfmon.exe
Form1.h
private:
PerformanceCounter^ PC_PTT;
ArrayList AL_PC_NIR, AL_PC_NIS; //数组不需要初始化
private:
System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e)
{
PerformanceCounterCategory^ PCC = gcnew PerformanceCounterCategory("Network Interface");
array<String^>^ arrayInstanceNames = PCC->GetInstanceNames();
String^ instanceName;
for each(instanceName in arrayInstanceNames) {
System::Diagnostics::Debug::WriteLine("L178: " + instanceName);
PerformanceCounter^ PC_NIR = gcnew PerformanceCounter("Network Interface", "Bytes Received/sec", instanceName);
PerformanceCounter^ PC_NIS = gcnew PerformanceCounter("Network Interface", "Bytes Sent/sec", instanceName);
AL_PC_NIR.Add(PC_NIR);
AL_PC_NIS.Add(PC_NIS);
}
}
private:
System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e)
{
......
float BR = 0, BS = 0;
for each(PerformanceCounter ^ PC_NIR in AL_PC_NIR) {
BR += PC_NIR->NextValue();
}
for each(PerformanceCounter ^ PC_NIS in AL_PC_NIS) {
BS += PC_NIS->NextValue();
}
String^ string = "↑: " + KBS(BS) + "\n↓: " + KBS(BR);
this->label1->Text = string;
}
String^ KBS(float b)
{
String^ s = " 0 KB/s";
if(b > 999) {
s = (b / 1024).ToString("#0")->PadLeft(5, ' ') + " KB/s";
}
return s;
}
下一步要把信息显示到任务栏,不知道做耶~