Nou hier is de eerste Tut dan vrij simpel maar naar mijn idee wel erg leerzaam.
Proces Tracker
We beginnen met een hele simpele applicatie die uit niet al te veel regels code bestaat : een Applicatie waarbij je een proces selecteert (bijv. skype) en dan zal de Applicatie bij houden hoeveel seconden het proces actief is
Controls
Wat heb je nodig?
1 Button
1 textbox
1 label
1 openfiledialog
1 timer
Deel het zo ongeveer zo in
En noem het seconde label Lseconden
Declaratie
We ga een paar variablen gebruiken in onze code deze moeten we natuurlijk eerst declaren
Dim p() As Process
P als process deze hebben we nodig om het proces te "tracken"
Dim Procesnaam As String
spreekt voor zich lijkt mij de naam van het proces dat we willen "tracken" als een string, een string staat simpel gewoon voor tekst
Dim seconde As Integer
Spreek ook voor zich een integer om de secondes bij te houden, een integer staat voor een getal zonder decimalen.
zet deze variabelen onder Public Class Form1.
Proces selecteren
Om het proces te kunnen selecteren hebben we de Openfiledialog nodig.
Dubbel klik op button 1 en zet daar deze code neer
OpenFileDialog1.ShowDialog()
Code spreek voor zich, zorgt er voor dat de OpenFileDialog opent.
Dubbel klik op de OpenFileDialog en zet daar zede code neer
TextBox1.Text = OpenFileDialog1.SafeFileName
We gebruiken hier .SafeFileName omdat we alleen de naam van het process willen hebben en niet het hele pad.
Daar onder zet je
Procesnaam = Replace(TextBox1.Text, ".exe", "")
Hier wijzen we de variabele Procesnaam die we eerder hebben gedeclareerd een waarde toe. Namelijk de naam van het proces dat we hebben geselecteerd. Maar we hebben de .exe die achter de naam staat niet nodig dus die halen we weg met de Replace functie
en die werkt ongeveer zo
Replace(in welke waarde, wat moet worden vervangen, door wat moet het worden vervangen)
Als je kijkt zie je dat de sub die dan word aangemaakt er zo uit ziet
Hij heet OpenFileDialog1_FileOk en later zie je staan Handles OpenFileDialog1.FileOk
dit betekent dat wanneer er dus op OK word gedrukt de code die in deze sub staat word uit gevoerd dit noemen we een event, hier komt waarschijnlijk later nog een tut over.
Als laatste voegen we nog een filter toe zodat er alleen maar .exe bestanden kunnen worden geopend dit doe je bij de properties van de openfiledialog bij filter
Proces (*.exe)|*.exe
Het checken van het proces
Nu willen we gaan kijken of het proces actief is hier voor gebruiken we een timer. Zet de interval op 1000 (1 seconde) en zet de timer op enabled.
Dubbel klik op de timer en zet daar als eerste dit neer
p = System.Diagnostics.Process.GetProcessesByName(Procesnaam)
Hier wijzen we de variabele P die we hebben gemaakt een waarde toe
met GetprocessesByName kijken we of het proces bestaat/actief is en welk proces dat is wijzen we toe met (procesnaam).
Daar onder zet je neer :
If p.Count > 0 Then seconde = seconde + 1 Lseconden.Text = "Aantal seconden : " & seconde End If
De regel met if p.Count > 0 betekent dat als er meer dan 0 processen actief zijn met die naam de code er onder word uitgevoerd.
seconde = seconde + 1
Telt iedere keer 1 op bij de variabele seconde die we hebben gemaakt.
(zou ook korter kunnen als seconden += 1 alleen dit is duidelijker)
Lseconden.Text = "Aantal seconden : " & seconde
Dit zorgt er voor dat het Label Lseconden de waarde van seconde laat zien.
Hier nog een keer de gehele source.
Public Class Form1 Dim p() As Process Dim Procesnaam As String Dim seconde As Integer Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click OpenFileDialog1.ShowDialog() ' Open het dialoog om het process met te selecteren End Sub Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk TextBox1.Text = OpenFileDialog1.SafeFileName 'zet alleen de naam van het process in de textbox doormiddel van .SafeFileName Procesnaam = Replace(TextBox1.Text, ".exe", "") 'We willen de naam van het proces zonder .exe met replace halen we dat weg End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick p = System.Diagnostics.Process.GetProcessesByName(Procesnaam) 'Hier kijken we of het proces bestaat (actief is) If p.Count > 0 Then 'zijn er meer dan 0 processen met die naam actief dan beginnen we met tellen seconde = seconde + 1 Lseconden.Text = "Aantal seconden : " & seconde End If End Sub End Class
Dit was mijn eerste VB tut hebben jullie nog tips? wat kan beter?
verder kwa niveau moet het moeilijker/makkelijker of is dit goed?
Graag ook ideeën voor een volgende tut!
-Cedric5