Visual Basic (2010 Express) - Externe Programme beenden und wieder starten?
Hallo,wie oben schon beschreiben, möchte ich ein Programm schreiben welches ein anderes externes Programm beendet (um genau zu sein Steam), also im prinzip den Prozess Steam.exe beendet.
Auserdem möchte ich das es später, auf Knopfdruck wieder Steam (bzw Steam/Origin/Uplay etc.) startet.
Ich habe leider überhaupt kein Plan, wie ich das umsetzten soll...
Vielen Dank :)
2 Antworten
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)
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 ;-)
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 :)
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
- dim process as new Process
Hier deklariert sich eine Variable die sozusagen einen neuen Prozess nimmt
- 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 :)
So geht's:
Dim prozess as Process = Process.GetProcessByName("Firefox") prozess.kill()
Hoffe ich konnte helfen :) ich empfehle dir die Webseite vb-paradise.de :)
:/ Allerdings bekomme ich eine fehlermeldung ..
"GetProcessByName" ist kein Member von "System.Diagnostics.Process"
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
teil 1 sehr hilfreich danke :)
teil 2 ..^^, immerhin versucht :D
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 ??