ERLEDIGT
JA
JA
ANTWORTEN
11
11
ZUGRIFFE
1104
1104
EMPFEHLEN
-
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
-
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ß, AdrianFür einen ist es Windows, für den anderen die größte Batch-Datei der Welt...
-
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?
-
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...
-
Hi,
Zitat von NRFi
dieses Thema würde mich auch Interessieren, weißt du vielleicht wie das mit einem Timer aussehen müsste
-
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 TimerFür einen ist es Windows, für den anderen die größte Batch-Datei der Welt...
-
-.- 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)
-
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...
-
Zitat von NRFi
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?
-
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...
-
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?
-
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
-
Prüfen ob VNC läuft über Internet
Von soyo im Forum Coders TalkAntworten: 1Letzter Beitrag: 02.07.08, 14:38 -
Prüfen ob Prozess läuft
Von Gamer123 im Forum C/C++Antworten: 1Letzter Beitrag: 15.04.08, 15:30 -
Zyklisch prüfen ob der Server noch läuft
Von Timo Rickert im Forum Linux & UnixAntworten: 3Letzter Beitrag: 03.11.05, 16:37 -
Prüfen ob ein Programm läuft
Von MatMagic im Forum Visual Basic 6.0Antworten: 2Letzter Beitrag: 01.09.05, 23:42 -
Prüfen ob PHP korrekt läuft!
Von ahykes im Forum Hosting & WebserverAntworten: 12Letzter Beitrag: 26.01.05, 14:26





Zitieren
Login





