Visual Basic (2010 Express) - Externe Programme beenden und wieder starten?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Schau dir die Klasse Process im Namespace System.Diagnostics an!

http://msdn.microsoft.com/de-de/library/system.diagnostics.process%28v=vs.110%29.aspx

Zum Starten: Process.Start() aufrufen

Zum Beenden:

mit Process.GetProcesses() dir die laufenden Prozesse geben lassen (macht Sinn hier direkt zu filtern nach Steam). Auf dem gefundenen Objekt / den gefundenen Objekten Terminate() aufrufen um den Prozess zu beenden.

Zum Beobachten:

Anstatt Terminate aufzurufen auf das Exited-Event registrieren. Dann informiert dich Windows wenn der entpsrechende Prozess beendet wurde (entweder durch dein Programm, sich selbst, den User oder durch ein anderes Programm)

ichjetztdu 
Fragesteller
 15.12.2014, 14:10

könntest du mir das mit dem getprocesses evtl. ein wenig besser erklären bzw ein bsp. geben ??

Habe jetzt Process.GetProcesses("C:\Program Files (x86)\Steam\Steam.exe") und wie tuh ich das jetzt beenden ??

0
FaronWeissAlles  16.12.2014, 17:01
@ichjetztdu

Ich habe dir alle Informationen gegeben die man benötigt um das Problem zu lösen. Der Rest ist reine Implementierung. Das werde ich aber nicht für dich übernehmen, schließlich will ich ja nicht die ganze Arbeit machen ;-)

0

Also starten ist sehr einfach: entweder Prozess.start("derpfad/steam.exe") oder system.diagnostics.process.start("steam.exe)

Das beenden ist Entwässerung schwerer.. Erstelle einen Prozess... Ich habe ewig nicht mit vb programmiert aber ich glaube es geht so: dim a as Prozess ...

Und dann iwas mit Prozess = getprocessbyid oder by Name... Google einfach mal vb Prozess beenden :)

ichjetztdu 
Fragesteller
 15.12.2014, 13:45

teil 1 sehr hilfreich danke :)

teil 2 ..^^, immerhin versucht :D

0
greedychicken  15.12.2014, 14:03

So geht's:

Dim prozess as Process = Process.GetProcessByName("Firefox") prozess.kill()

Hoffe ich konnte helfen :) ich empfehle dir die Webseite vb-paradise.de :)

0
ichjetztdu 
Fragesteller
 15.12.2014, 14:54
@greedychicken

Danke :)

( Interessanterweise hab ich mich grad nebenbei dort angemeldet xD )

0
ichjetztdu 
Fragesteller
 15.12.2014, 14:57
@greedychicken

:/ Allerdings bekomme ich eine fehlermeldung ..

"GetProcessByName" ist kein Member von "System.Diagnostics.Process"

0
ichjetztdu 
Fragesteller
 15.12.2014, 15:24
@ichjetztdu

hat sich erledigt, hab raus gefunden wie es geht :) Danke trotzdem :)

(für alle dies noch wollen ...)

Dim prozess As String = "Steam"
For Each Process In System.Diagnostics.Process.GetProcessesByName(prozess)
Process.Kill()
Next
0
greedychicken  15.12.2014, 15:29

Alles klar :D sehr gut :) gerne :))

0
CyroT  16.12.2014, 09:09

Hey :) ich glaube du hast die Prozedur noch nicht ganz verstanden :/ die erste Variable spielt für deinen Zweck keine Rolle :o mal zur Erklärung:

Tutorial - Prozesse

  1. dim process as new Process

Hier deklariert sich eine Variable die sozusagen einen neuen Prozess nimmt

  1. process.startinfo.filename("Explorer.exe)

Hier werden die Eigenschaften für den Prozess zugeteilt. In unserem Fall der prozessuale

Prozess.kill() oder Prozess.start()

Hier kann der Prozess unter anderem gestoppt oder gestartet werden.

2------

Wir können auch mit der prozessübersicht arbeiten. Beispielsweise alle Prozesse mit einer bestimmten Bezeichnung beenden:

For each prozess in system.diagnostics.process.getbyname("Explorer.exe")

Prozess.kill()

Was Sinn macht, musst du individuell für dich entscheiden. Im Grunde kommst du mit beiden Lösungen zu deinem Ziel :)

Hilfreich ist es, um eine Code zu verstehen, ihn mal zu übersetzten. Zum Glück verwendet VB viele ganze englische Wörter und schreibt zum Beispiel auch freundlicher Weise die Datentypen aus: statt int - integer

Hoffe ich konnte dein Verständnis nochmal festigen :)

0