tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
11
ZUGRIFFE
1104
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    klacm klacm ist offline Rookie
    Registriert seit
    Feb 2005
    Beiträge
    5
    Guten Abend,

    ich möchte mit vb.net ein Programm programmieren, dass überprüft ob datei 1 und datei 2 läuft. sollte datei 1/2 laufen sollte dann ein text kommen wo drin steht das die datei läuft(das macht man mit if then, aber was muss ich nach dem if eintragen?)

    aber jetzt erstmal zu meinem ersten problem: mit welchem befehl kann ich auslesen ob eine datei läuft/im taskmanager aufgelistet ist?

    danke im vorraus.

    gruß klacm
     

  2. #2
    NRFi NRFi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Behind the mouse
    Beiträge
    321
    Hi,
    ich habe irgendwann mal mit der Klasse Process rumgespielt [C#] (siehe Anhang wenn Lust).

    Da gibt es glaub ich eine Funktion GetProcesses in frmMain, wo alle laufenden Prozesse ausgelesen werden. Du kannst da dann über die Klassenmember auch sicher auf die Namen der Datei kommen. Das ist in dem Programm auch so, das ist quasi ein unvollständig nachgebauter Taskmanager, also ich denke mal das, was du brauchst

    Ich hoffe du kriegst das hin, weil es ja nicht VB ist

    Ansonsten ist das Prinzip so:

    Code :
    1
    2
    3
    4
    5
    
    dim proc() as System.Diagnostics.Process = System.Diagnostics.Process.GetProcesses("dein_rechnername_oder_so")
     
    for each p as System.Diagnostics.Process in proc
          debug.write p.processname
    next

    Weitere Informationen kannst du aus p und p.modules bekommen, aber guck dir das Beispiel an.

    Gruß, Adrian
    Angehängte Dateien Angehängte Dateien
     
    Für einen ist es Windows, für den anderen die größte Batch-Datei der Welt...

  3. #3
    klacm klacm ist offline Rookie
    Registriert seit
    Feb 2005
    Beiträge
    5
    ok, also dein befehl geht schonmal ohne probleme, aber jetzt kommt noch meine unerfahrenheit dazu und es geht nicht

    Code :
    1
    2
    3
    4
    
            Dim proc() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcesses("localhost")
     
            For Each p As System.Diagnostics.Process In proc
                Debug.Write(p.ProcessName)

    ich habe oben localhost eingetragen weil wenn ich mein computername eintrage er auf eine andere seite im internet zugreifen will. das ist nicht das problem aber wenn ich
    Code :
    1
    
     if p.ProcessName("Apache.exe") then Label3.Text("Apache Läuft") else Label3.Text("Apache läuft nicht")

    unten drunter eingebe, dann passiert einfach nichts und es wird nur der vorher definierte text angezeigt. also wo liegt meine dummheit bzw. welchen befehl muss ich benutzen, dass wenn die datei apache.exe läuft der text Apache läuft angezeigt wird?
     

  4. #4
    NRFi NRFi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Behind the mouse
    Beiträge
    321
    denk dran nen timer drin zu haben, damit der das sowieso immer aktualisiert, ne?
    Weil wenn du das nur einmal aufrufst und du dann erst Apache startet, dann kann auch nichts passieren.
    also muss die Funktion mit einem Timer arbeiten. das zuerst...

    gib mal deinen Code, so ist das schwer zu sagen.

    obwohl ich meine, das in den Prozessen apache.exe und nicht Apache.exe steht, also probier mal

    achja, ich sehe grad...

    p.ProcessName ist ein String, du musst also

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    dim proc() as System.Diagnostics.Process = System.Diagnostics.Process.GetProcesses("localhost")
     
    for each p as System.Diagnostics.Process in proc
          if p.ProcessName.ToUpper = "apache.exe".toUpper then
                 Label3.Text = "Apache Läuft"
                 exit for
          else
                 Label3.Text = "Apache läuft nicht"
          end if
    next

    machen.

    durchlaufe processe -> wenn process = APACHE.EXE -> läuft -> sonst: läuft nicht.

    viel glück
     
    Für einen ist es Windows, für den anderen die größte Batch-Datei der Welt...

  5. #5
    Avatar von forsterm
    forsterm forsterm ist offline Mitglied Rubin
    Registriert seit
    Nov 2004
    Ort
    Bayern
    Beiträge
    1.328
    Zitat Zitat von NRFi
    denk dran nen timer drin zu haben, damit der das sowieso immer aktualisiert, ne?
    Weil wenn du das nur einmal aufrufst und du dann erst Apache startet, dann kann auch nichts passieren.
    also muss die Funktion mit einem Timer arbeiten.
    Hi,


    dieses Thema würde mich auch Interessieren, weißt du vielleicht wie das mit einem Timer aussehen müsste
     

  6. #6
    NRFi NRFi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Behind the mouse
    Beiträge
    321
    ja, morgen wüsste ich es vielleicht wieder

    ansonsten guck dir das C# Beispiel von mir an, was ich hochgeladen habe. Also der Zip-Anhang, da ist das schon fertig mit dem Timer
     
    Für einen ist es Windows, für den anderen die größte Batch-Datei der Welt...

  7. #7
    klacm klacm ist offline Rookie
    Registriert seit
    Feb 2005
    Beiträge
    5
    -.- ich bekomms einfach nicht hin. ich habe nichts am text geändert und es geht trotzdem nicht.

    edit: es wird als Fehlerbegründung "As System.Diagnostics.Process = System.Diagnostics.Process.GetProcesses("localhost")" angezeigt

    achja mal was nebenbei: ich habe einem freund eine frühere version meines programmes gegeben und bei ihm kommt, dass es keine gültige win32 anwendung sei. kann es sein, dass bei ihm die .net framework 2.0 beta version fehlt(ich arbeite mit der visual basic 2005 express edition beta version)
    Geändert von klacm (14.02.05 um 18:11 Uhr)
     

  8. #8
    NRFi NRFi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Behind the mouse
    Beiträge
    321
    baa, jetzt muss ich auch noch mit virtual pc auf mein .net 2.0 system

    ok, hier ein Beispiel VB.NET 2.0:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    
        Private Sub cmdstart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdstart.Click
            Timer1.Interval = 2000
            Timer1.Start()
        End Sub
     
        Private Sub cmdstop_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdstop.Click
            Timer1.Stop()
        End Sub
     
        Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            Dim processes() As System.Diagnostics.Process = System.Diagnostics.Process.GetProcesses()
     
            For Each p As System.Diagnostics.Process In processes
                If p.ProcessName.ToUpper = txtprocessname.Text.ToUpper Then
                    Label1.Text = txtprocessname.Text & " existiert."
                    Exit Sub
                End If
            Next
            Label1.Text = txtprocessname.Text & " existiert nicht."
        End Sub

    einfach starten und etwas warten, jede 2 sekunden wird nach den prozessen geschaut.
    WICHTIG, kein .exe hinten dran.


    gebraucht wird:

    2 labels: label1, label2
    2 buttons: cmdstart, cmdstop
    1 timer: timer1
    1 textbox: txtprocessname

    bei mir hats ohne probleme hingehauen.
     
    Für einen ist es Windows, für den anderen die größte Batch-Datei der Welt...

  9. #9
    Avatar von forsterm
    forsterm forsterm ist offline Mitglied Rubin
    Registriert seit
    Nov 2004
    Ort
    Bayern
    Beiträge
    1.328
    Zitat Zitat von NRFi
    bei mir hats ohne probleme hingehauen.


    Hey,

    danke bei mir auch.

    Hab nur noch eine Frage weißt du wie man dass machen könnte, dass nicht nach einem Task gesucht wird, sondern nach einem Fenster, welches an hand des Titels identifiziert wird?
     

  10. #10
    NRFi NRFi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Behind the mouse
    Beiträge
    321
    guck dir doch mal das C# Beispiel an, da werden die einzelnen Properties von Process benutzt:

    p.MainWindowTitle


    also, auch mal selber

     
    Für einen ist es Windows, für den anderen die größte Batch-Datei der Welt...

  11. #11
    klacm klacm ist offline Rookie
    Registriert seit
    Feb 2005
    Beiträge
    5
    es geht. vielen dank.

    noch ne frage nebenbei: warum eigentlich label 2?

    so es geht jetzt zwar soweit, dass ich den namen der Datei eingeben muss, aber kann man es nicht so machen, dass der dateienname von einer festen quelle geprüft wird, also man nicht bestimmen kann nach welcher datei geguckt werden soll?
     

  12. #12
    NRFi NRFi ist offline Mitglied Brokat
    Registriert seit
    Jul 2003
    Ort
    Behind the mouse
    Beiträge
    321
    achso, label2 war glaub ich bei mir im beispiel irgendeine bezeichnung für eine textbox.
    klar, du brauchst ja nur die textbox durch eine eigene variable ersetzen, dann ist das ganze fest. der code da oben ist ja ein dynamisches beispiel.
     
    Für einen ist es Windows, für den anderen die größte Batch-Datei der Welt...

Ähnliche Themen

  1. Prüfen ob VNC läuft über Internet
    Von soyo im Forum Coders Talk
    Antworten: 1
    Letzter Beitrag: 02.07.08, 14:38
  2. Prüfen ob Prozess läuft
    Von Gamer123 im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 15.04.08, 15:30
  3. Zyklisch prüfen ob der Server noch läuft
    Von Timo Rickert im Forum Linux & Unix
    Antworten: 3
    Letzter Beitrag: 03.11.05, 16:37
  4. Prüfen ob ein Programm läuft
    Von MatMagic im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 01.09.05, 23:42
  5. Prüfen ob PHP korrekt läuft!
    Von ahykes im Forum Hosting & Webserver
    Antworten: 12
    Letzter Beitrag: 26.01.05, 14:26