VB .NET - Exibindo Recursos do Sistema com gráfico


 Hoje temos um projeto que exibe os recursos do sistema como CPU, memória e processos e também cria um gráfico para indicar o uso deste recursos.

Neste projeto iremos usar o componente PerformanceCounter que representa um componente contador de desempenho do Windows.

Este componente pode ser usado para ler contadores predefinidos existentes ou contadores personalizados e exibir os dados de desempenho. Existem muitos contadores predefinidos que podem ser usados.

Um contador é o mecanismo pelo qual os dados de desempenho são coletados. O Registro armazena os nomes de todos os contadores, cada qual está relacionado a uma área específica da funcionalidade do sistema. Os exemplos incluem o tempo ocupado de um processador, o uso da memória, ou o número de bytes recebidos sobre uma conexão de rede.

Cada contador é identificado com seu nome e o local. Da mesma forma que um caminho de arquivo inclui uma unidade, um diretório, um ou mais subdiretórios, e um nome de arquivo, informações sobre o contador consistem de quatro elementos: o computador, a categoria, a instância de categoria, e o seu nome.

Alguns dos tipos de contador de desempenho são apenas para situações especiais, mas a lista a seguir contém os tipos mais comuns utilizados normalmente :

  1. NumberOfItems32 - um contador que conta o número de itens. Você pode usá-lo para calcular a frequência com que uma operação foi realizada ou para contar o número total de itens que você processou;.

  2. RateOfCountsPerSecond32 - um contador que rastreia o número de itens ou de operações por segundo;

  3. AverageTimer32 - um contador que mede o tempo médio necessário para executar uma operação. O contador é calculado pela razão entre o tempo total decorrido e do número de itens concluídos durante esse tempo.

  4. AverageBase - o contador de base para AverageTimer32 que conta o número de itens concluídos durante o tempo decorrido.

Recursos usados :

Exibindo os recursos do sistema com Gráfico

Abra o VS Express 2013 for Windows Desktop e clique em New Project;

A seguir selecione a linguagem Visual Basic e o template Windows Forms Application;

Informe o nome RecursosGrafico e clique no botão OK;

A seguir selecione o  formulário padrão form1.vb e partir da ToolBox, os seguintes controles:

Disponha os controles conforme o leiaute abaixo:

O código usado no formulário é visto a seguir:

Public Class Form1
    Dim g As Graphics
    Dim m_sngX As Single = 0
    Dim m_sngY As Single
    Dim m_sngCPUY As Single
    Dim m_sngProcsY As Single
    Dim m_sngMemY As Single
    Dim cntr As Integer = 0
    Dim penCPU As New System.Drawing.Pen(Color.Red, 2.0F)
    Dim penProcs As New System.Drawing.Pen(Color.Green, 3.0F)
    Dim penMem As New System.Drawing.Pen(Color.Blue, 4.0F)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        g = PainelGrafico.CreateGraphics()
        PainelGrafico.BackColor = Color.White
        m_sngY = PainelGrafico.Height
        txtCPU.BackColor = Color.Red
        txtMemoria.BackColor = Color.Blue
        txtProcessos.BackColor = Color.Green
    End Sub

    Private Sub tmrClock_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tmrClock.Tick
        Dim sglCPU As Single = PfcCPU.NextValue() / 100
        Dim sglProcessos As Single = PfcProcessos.NextValue()
        Dim sglMemoria As Single = PfcMemoria.NextValue() / 1024
        lblUsoCPU.Text = sglCPU.ToString("p")
        lblMemoria.Text = sglMemoria.ToString("f0") + " KB"
        lblProcessos.Text = sglProcessos.ToString()
        DesebgaGrafico(sglCPU, sglProcessos, sglMemoria)
        If cntr > 10 Then
        End If
        cntr = cntr + 1
    End Sub
    Private Sub  DesebgaGrafico(ByVal sglCPU As Single, ByVal sglProc As Single, ByVal sglMem As Single)
        Dim sglHeight As Single = PainelGrafico.Height
        g.DrawLine(penCPU, m_sngX, m_sngY - 50, m_sngX + 10, sglHeight - (sglCPU * sglHeight) - 50)
        g.DrawLine(penCPU, m_sngX + 10, sglHeight - (sglCPU * sglHeight) - 50, m_sngX + 10, PainelGrafico.Height - 50)
        g.DrawLine(penMem, m_sngX, sglHeight - (sglMem / 3929000) * sglHeight - 50, m_sngX + 10, sglHeight - (sglMem / 3929000) * sglHeight - 50)
        g.DrawLine(penProcs, m_sngX, sglHeight - (sglProc / 100) * sglHeight - 50, m_sngX + 10, sglHeight - (sglProc / 100) * sglHeight - 50)
        m_sngX = m_sngX + 10
    End Sub

End Class

Basta executar o projeto, para obter o resultado da utilização da CPU, memória e a quantidade de processos em execução:

Pegue o projeto completo aqui:  Recursos_Grafico.zip

Porque não vos fizemos saber a virtude e a vinda de nosso Senhor Jesus Cristo, seguindo fábulas artificialmente compostas; mas nós mesmos vimos a sua majestade. (2 Pedro 1:16)

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti