Prozess Beenden nur wen vorhanden ist?

  • VB.NET
  • .NET 4.5

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Prozess Beenden nur wen vorhanden ist?

    Hallo ich habe noch Folgendes Problem.

    Ich starte ein externes Prozess Funzioniert auch, killen Eben so.

    Aber.. Wen es nicht gestartet wurde. und ich nur schlissen will ohne den prozess killen zu wollen da es ja nicht vorhanden ist?

    Dim Browserprocess As New Process()
    Im Form Load soll dann stehen:
    Browserprocess.StartInfo.FileName = "BrowserForm.exe"


    Im Close Button habe ich versucht..

    VB.NET-Quellcode

    1. If Browserprocess.Id > 0 Then
    2. Browserprocess.Kill()
    3. Me.Close
    4. ElseIf Browserprocess.Id <= 0 Then
    5. Me.Close
    6. End If


    Auch If Browserprocess isnot nothing...

    Nix zu machen er sagt dann immer:...
    Diesem Objekt ist kein Prozess zugeordnet.

    Jap Wurde ja auch nicht gestartet? :thumbdown:

    Neu

    @seby1302 eine Process-Instanz hat z.B. eine Property .HasExited. Sieh Dir einfach mal in diesem Kontext Deine aktuelle Process-Instanz an: Debuggen, Fehler finden und beseitigen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    Neu

    seby1302 schrieb:

    VB.NET-Quellcode

    1. Me.Close
    2. Else
    3. Me.Close
    What :?:
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    Neu

    keiner eine idee wie sowas funzionieren soll?

    Ist prozess am laufen kill prozess und schlissen.
    Wenn prozess nicht läuft nur mich selbst schlissen!?

    wenn prozess läuft alles tutti schlißt ohne fehler, wenn prozess nicht läuft? dann kommt meldung von oben :thumbdown:

    VB.NET-Quellcode

    1. ​If Browserprocess.HasExited = true or false
    2. Browserprocess.kill
    3. Me.Close
    4. Else
    5. Me.Close
    6. End If

    Neu

    seby1302 schrieb:

    If Browserprocess.HasExited = true or false
    Abgesehen von der Tatsache, dass das nicht kompiliert, weil ein Then fehlt, Preisfrage:
    Was erwartest du für ein Ergebnis von diesem (überaus umständlichen) logischen Ausdruck, wenn der Prozess zu Ende ist?
    Und welcher Programmzweig wird dann ausgeführt?

    Und wenn du die Abfrage deutsch formulierst und ins englische übersetzt, hast du schon VB.

    Quellcode

    1. Wenn Nicht Prozess.HatGeendet Dann Prozess.Abschiessen
    2. Mich.Schliessen

    Zugegeben, sprachlich etwas holprig, aber dafür logisch korrekt.
    Und einfacher als dein Versuch.
    Und 1:1 in Computerlogik übertragbar.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „petaod“ ()

    Neu

    Wäre es möglich den Code am Stück, und zwar so wie er wirklich aussieht (copy and paste)), hier zu posten?

    Ich vermute das Browserprocess irgendwo anders instanziert wurde, wenn überhaupt.
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Neu

    @mrMo Jou.
    @seby1302 Poste das Projekt ohne die bin- und obj-Verzeichnisse als ZIP.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    Neu

    Nein das Problem ist das der Prozess nicht gestartet wurde...

    Deshalb soll er dann einfach Schlißen ohne zu Vesuchen den kill auszuführen den der Prozess wurde ja nicht gestartet....


    Was soll ich da großartig posten.. ist in ein button die if anfrage..

    VB.NET-Quellcode

    1. Private Sub CloseButton_Click(sender As Object, e As EventArgs) Handles CloseButton.Click
    2. If Browserprocess.HasExited = true Then
    3. Browserprocess.kill
    4. Me.Close
    5. Else
    6. Me.Close
    7. End If
    8. End Sub


    Kurz gesagt der Externe Prozess kann laufen oder auch nicht deshalb soll es WENN ES LÄUFT Diesem Killen Und dann Me.Close ABER Wen nicht Einfach ME.Close
    Wie bereits erwähnt wenn der Prozess Läuft Führt er den Kill und den close ohne Probleme aus, ich interessiert also nun einfach nur wie sage ich dem Wenn der Prozes Nothing ist also nicht existiert schlißen nur und ganz einfach schlissen ohne zu vesuchen den NICHT vorhandenes Prozess zu Killen!!!

    Neu

    Sage ich doch.

    seby1302 schrieb:

    WENN ES LÄUFT Diesem Killen
    ist genau NICHT

    seby1302 schrieb:

    If Browserprocess.HasExited = true Then

    Also:

    VB.NET-Quellcode

    1. ​If Browserprocess.HasExited = False Then 'Prozess ist noch nicht beendet
    2. Browserprocess.kill
    3. Me.Close
    4. Else
    5. Me.Close
    6. End If

    oder auch:

    VB.NET-Quellcode

    1. ​If Not Browserprocess.HasExited Then
    2. Browserprocess.kill
    3. Me.Close
    4. Else
    5. Me.Close
    6. End If

    Vereinfacht:

    VB.NET-Quellcode

    1. ​If Not Browserprocess.HasExited Then
    2. Browserprocess.kill
    3. End If
    4. Me.Close​

    Kürzer:

    VB.NET-Quellcode

    1. ​If Not Browserprocess.HasExited Then Browserprocess.kill
    2. Me.Close​

    Und dann sind wir wieder bei dem von mir vorgeschlagenen Zweizeiler
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „petaod“ ()

    Neu

    @seby1302 Wäre es möglich den ganzen Code zu sehen? Bei dir fehlt das entscheidende...
    Ach und bitte den Code am Stück posten.

    mrMo schrieb:

    Wäre es möglich den Code am Stück, und zwar so wie er wirklich aussieht (copy and paste)), hier zu posten?
    "Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. Lehre einen Mann zu fischen und du ernährst ihn für sein Leben."

    Wie debugge ich richtig? => Debuggen, Fehler finden und beseitigen
    Wie man VisualStudio nutzt? => VisualStudio richtig nutzen

    Neu

    seby1302 schrieb:

    Kurz gesagt
    Leseschwäche?
    Beratungsresistenz?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    Neu

    Ok ich habe nun ein neuen project gestartet zum separaten testen und habe festgestellt das....

    Es funzioniert keiner der hier gennanten methoden... ?(
    AUSER!!!

    Wenn der zu killenden Prozess erst einmal gestartet wurde..
    Ich will aber Überprüfen ob es vorhanden ist oder nicht, es muss Garnicht erst vorhanden gewesen sein!!!


    Versuche das so zu Erlären was der veranstaltet...

    Das ist das was es macht...
    Prozess nicht gestartet = *Error*
    Prozess wurde gestartet = *Kill + Me.Close (ok)*
    Prozess Wahr Eimal gestartet ist aber Nicht mehr vorhanden *Me.close*

    Siehe Test datei.
    P.S zum testen bitte NUR die (Kill Browser wenn vorhanden.exe) starten.


    Ich habe Es geschafft jupiii

    VB.NET-Quellcode

    1. Dim Prozesse As Process() = Process.GetProcesses
    2. For Each Prozess As Process In Prozesse
    3. If Prozess.ProcessName.Contains("BrowserForm") Then
    4. Prozess.Kill()
    5. MessageBox.Show("Prozess (Gekillt)")
    6. Exit For
    7. End If
    8. Next
    9. Me.close
    Dateien
    • Kill test.rar

      (12,76 kB, 3 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „seby1302“ ()

    Neu

    @seby1302

    RodFromGermany schrieb:

    Poste das Projekt ohne die bin- und obj-Verzeichnisse als ZIP.
    Du sollst die Quellen posten, nicht die EXE. Das Projekt eben.
    =====

    seby1302 schrieb:

    Prozess nicht gestartet = *Error*
    ist natürlich völlig korrekt, denn die Prozess-Instanz muss zunächst initialisiert werden:

    Lesen können ist nun mal von Vorteil.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „RodFromGermany“ ()

    Neu

    Jap Gennau so siehts aus lesen können ist auch alles ;)

    Den ich hatte auch gesagt...
    ​Auch If Browserprocess isnot nothing...Nix zu machen er sagt dann immer:... Diesem Objekt ist kein Prozess zugeordnet. --->Jap Wurde ja auch nicht gestartet? :thumbdown:


    Hat sich jetzt aber erledigt mit dem Von mir zuletzt geposteten code Funzioniert es. Somit Kann geschloßen werden.

    Neu

    @seby1302 Du musst ihn schließen, doppelklicke auf das abgerundete Quadrat oben neben dem Thread-Titel.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    VB-Fragen über PN / Konversation werden ignoriert!