-
-
- Option Strict On
- Imports System.ComponentModel
- Imports System.ComponentModel.Design.Serialization
- <ToolboxBitmap(GetType(GrahProc), "GrahProc.bmp")> _
- Public Class GrahProc
- Inherits System.Windows.Forms.UserControl
- #Region "Declaration"
- Dim _Graph_BackColor As Color = Color.Black
- Dim _Graph_GridColor As Color = Color.SeaGreen
- Dim _Graph_GridColorPen As Pen = Pens.SeaGreen
- Dim _Graph_GraphColor As Color = Color.Lime
- Dim _Graph_GraphColorPen As Pen = Pens.Lime
- Dim _Graph_BorderStyle As BorderStyle = Windows.Forms.BorderStyle.FixedSingle
- Dim _Graph_Start As Boolean
- Dim _Graph_Width As Integer = 100
- Dim _Graph_Height As Integer = 24
- Dim _Graph_Interval As Integer = 1000
- Dim _Graph_QuaterSize As Short = 12
- Dim _Graph_Licence As Boolean = True
- Dim _Graph_Serial As String = CStr(My.Computer.Registry.GetValue _
- ("HKEY_LOCAL_MACHINE\SOFTWARE\Need-Soft\GraphProc", _
- "Serial", Nothing))
- Dim Var_Points() As Point 'tableau qui contient les coordonées du graph
- Dim Yy As Integer = 0 'variable pour gérer le décalage du quadrillage
- Dim frmAbout_Form As New frmAbout
- Dim Var_Process As System.Diagnostics.Process
- Dim Var_TmpProc01 As String = "0"
- Dim Var_TmpProc02 As String
- Dim Var_TmpMach1 As String = "0"
- Dim Var_TmpMach2 As String
- Dim Var_PercentProc As Integer 'valeur en % d'utilisation du processeur
- Dim Var_CountProc As Integer = Environment.ProcessorCount 'nombre de processeur(s)
- Dim Var_Tag1 As Short = 0
- #End Region
- #Region "Propiété"
- Public Property Graph_BorderStyle() As BorderStyle
- Get
- Return _Graph_BorderStyle
- End Get
- Set(ByVal value As BorderStyle)
- Select Case value
- Case Windows.Forms.BorderStyle.Fixed3D
- Me.PnlProc.BorderStyle = Windows.Forms.BorderStyle.Fixed3D
- _Graph_BorderStyle = Windows.Forms.BorderStyle.Fixed3D
- Case Windows.Forms.BorderStyle.FixedSingle
- Me.PnlProc.BorderStyle = Windows.Forms.BorderStyle.FixedSingle
- _Graph_BorderStyle = Windows.Forms.BorderStyle.FixedSingle
- Case Windows.Forms.BorderStyle.None
- Me.PnlProc.BorderStyle = Windows.Forms.BorderStyle.None
- _Graph_BorderStyle = Windows.Forms.BorderStyle.None
- End Select
- End Set
- End Property
- Public Property Graph_BackColor() As Color
- Get
- Return _Graph_BackColor
- End Get
- Set(ByVal value As Color)
- _Graph_BackColor = value
- PnlProc.BackColor = value
- End Set
- End Property
- Public Property Graph_GridColor() As Color
- Get
- Return _Graph_GridColor
- End Get
- Set(ByVal value As Color)
- _Graph_GridColor = value
- _Graph_GridColorPen = New Pen(_Graph_GridColor)
- End Set
- End Property
- Public Property Graph_GraphColor() As Color
- Get
- Return _Graph_GraphColor
- End Get
- Set(ByVal value As Color)
- _Graph_GraphColor = value
- _Graph_GraphColorPen = New Pen(_Graph_GraphColor)
- End Set
- End Property
- Public Property Graph_Interval() As Integer
- Get
- Return _Graph_Interval
- End Get
- Set(ByVal Value As Integer)
- _Graph_Interval = Value
- If _Graph_Interval > 60000 Then
- _Graph_Interval = 60000
- MsgBox("The value must be less 60000.", MsgBoxStyle.Information, "Need-Soft")
- ElseIf _Graph_Interval < 100 Then
- _Graph_Interval = 100
- MsgBox("The value must be more 99.", MsgBoxStyle.Information, "Need-Soft")
- End If
- Timer1.Interval = Value
- End Set
- End Property
- Public Property Graph_QuaterSize() As Short
- Get
- If _Graph_QuaterSize <= 3 Then
- _Graph_QuaterSize = 3
- End If
- Return _Graph_QuaterSize
- End Get
- Set(ByVal Value As Short)
- _Graph_QuaterSize = Value
- End Set
- End Property
- Public Property Graph_Start() As Boolean
- Get
- Return _Graph_Start
- End Get
- Set(ByVal value As Boolean)
- Me.Timer1.Enabled = value
- If value = False Then S_PnlClear()
- End Set
- End Property
- #End Region
- #Region "Function"
- Private Sub GraphProc_Resize(ByVal sender As Object, _
- ByVal e As System.EventArgs) _
- Handles Me.Resize
- Init_GraphProc()
- End Sub ' Contrôle au redimensionnement du contrôle
- Protected Sub Init_GraphProc()
- Me.PnlProc.Height = Me.Height 'on ajuste la taille
- Me.PnlProc.Width = Me.Width 'du panel à la taille du controle
- _Graph_Width = Me.Width
- _Graph_Height = Me.Height
- Try
- Var_Process = System.Diagnostics.Process.GetCurrentProcess
- Catch excep As Exception
- Exit Try
- End Try
- If _Graph_BorderStyle = Windows.Forms.BorderStyle.Fixed3D Then 'la gargeur du graph varie
- _Graph_Width = _Graph_Width - 3 'en fonction du style de la bordure
- _Graph_Height = _Graph_Height - 3
- ElseIf Graph_BorderStyle = Windows.Forms.BorderStyle.FixedSingle Then
- _Graph_Width = _Graph_Width - 1
- _Graph_Height = _Graph_Height - 1
- End If
- PnlProc.BackColor = _Graph_BackColor
- ReDim Var_Points(_Graph_Width)
- For u As Integer = 0 To _Graph_Width 'initialisation du tableau des coordonnées du graph
- Var_Points(u).X = (u - 1)
- Var_Points(u).Y = _Graph_Height
- Next
- _Graph_Serial = CStr(My.Computer.Registry.GetValue _
- ("HKEY_LOCAL_MACHINE\SOFTWARE\Need-Soft\GraphProc", _
- "Serial", Nothing))
- If Me._Graph_Serial = Nothing Then
- Me.frmAbout_Form.ShowDialog()
- End If
- End Sub 'initialise la taille du graph et la couleur de fond
- Protected Sub S_Pnl()
- Try
- Dim Graphic As System.Drawing.Graphics = PnlProc.CreateGraphics
- Dim I, Y, X As Integer
- Yy = Yy - 1
- If Yy < -_Graph_QuaterSize Then Yy = -1
- Y = Yy
- X = -1
- Graphic.Clear(_Graph_BackColor) ' on efface le panel
- For I = 0 To CInt(_Graph_Height / _Graph_QuaterSize) ' boucle pour tracer les traits verticaux
- X = X + _Graph_QuaterSize
- If X > _Graph_Height Then Exit For
- Graphic.DrawLine(_Graph_GridColorPen, 1, X, _Graph_Width, X)
- Next
- For I = 0 To CInt(_Graph_Width / (_Graph_QuaterSize)) ' boucle pour tracer les traits horizontaux
- Y = Y + _Graph_QuaterSize
- If Y > _Graph_Width Then Exit For
- Graphic.DrawLine(_Graph_GridColorPen, Y, 0, Y, _Graph_Height)
- Next
- For u As Integer = 0 To (_Graph_Width - 1) 'boucle pour décaler le graph de 1px sur la gauche
- Var_Points(u) = Var_Points(u + 1)
- Var_Points(u).X = (u - 1)
- Next u
- Var_Points((_Graph_Width - 1)).Y = CInt((100 - Func_Proc()) / 100 * _Graph_Height)
- Var_Points((_Graph_Width - 1)).X = _Graph_Width
- Graphic.DrawLines(_Graph_GraphColorPen, Var_Points)
- Graphic.Dispose()
- Catch excep As Exception
- Exit Sub
- End Try
- End Sub 'dessine le graph complet, fond, quadrillage et graph
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
- S_Pnl()
- End Sub 'timer, marche arret, intervalle
- Protected Sub S_PnlClear()
- Try
- Dim Graphic As System.Drawing.Graphics = PnlProc.CreateGraphics
- Dim I, Y, X As Integer
- Yy = Yy - 1
- If Yy < -_Graph_QuaterSize Then Yy = -1
- Y = Yy
- X = -1
- Graphic.Clear(_Graph_BackColor) ' on efface le panel
- For I = 0 To CInt(_Graph_Height / _Graph_QuaterSize) ' boucle pour tracer les traits verticaux
- X = X + _Graph_QuaterSize
- If X > _Graph_Height Then Exit For
- Graphic.DrawLine(_Graph_GridColorPen, 1, X, _Graph_Width, X)
- Next
- For I = 0 To CInt(_Graph_Width / (_Graph_QuaterSize)) ' boucle pour tracer les traits horizontaux
- Y = Y + _Graph_QuaterSize
- If Y > _Graph_Width Then Exit For
- Graphic.DrawLine(_Graph_GridColorPen, Y, 0, Y, _Graph_Height)
- Next
- Graphic.Dispose()
- Catch excep As Exception
- Exit Sub
- End Try
- End Sub 'a l'arret du timer on redessine le graph avec le fond et le quadrillage
- Function Func_Proc() As Integer
- Try
- Var_TmpProc02 = Split(Var_Process.TotalProcessorTime.ToString, ":")(2)
- Var_TmpProc02 = CStr(CDbl((Split(Var_TmpProc02, ".")(0) & Microsoft.VisualBasic.Left(Split(Var_TmpProc02, ".")(1), 3))) / Var_CountProc)
- Var_TmpMach2 = Environment.TickCount.ToString
- If Var_TmpMach1 = Var_TmpMach2 Then
- Return Var_PercentProc
- Exit Function
- End If
- Var_PercentProc = CInt(Math.Round(((CDbl(Var_TmpProc02) - CDbl(Var_TmpProc01)) / (CDbl(Var_TmpMach2) - CDbl(Var_TmpMach1))) * 100))
- Var_TmpProc01 = Var_TmpProc02
- Var_TmpMach1 = Var_TmpMach2
- If Var_PercentProc < 0 Then
- Var_PercentProc = 0
- ElseIf Var_PercentProc > 100 Then
- Var_PercentProc = 100
- End If
- Return Var_PercentProc
- Catch excep As Exception
- Return Var_PercentProc
- End Try
- End Function
- #End Region
- Private Sub PnlProc_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles PnlProc.DoubleClick
- Me.frmAbout_Form.ShowDialog()
- End Sub
- End Class