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;
        }

下一步要把信息顯示到任務欄,不知道做耶~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章