WaitForExit: Externe Anwendung mit Attribut starten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von TVX.

    WaitForExit: Externe Anwendung mit Attribut starten

    VB.NET-Quellcode

    1. Dim upd64 As New System.Diagnostics.Process()
    2. upd64.StartInfo.FileName = "update64.exe /S"
    3. upd64.Start()
    4. If upd64.WaitForExit(50000000) = True Then
    5. MessageBox.Show("Update erfolgreich installiert!")
    6. Button1.Enabled = True

    Um es kurz zu machen:
    Ich möchte gerne eine Datei mit Attribut ausführen.
    Wie geht das ohne das WaitForExit nicht mehr funktioniert.
    Bei mir kommt aktuell immer: Das System kann die angegebene Datei nicht finden.
    Weiß einer Rat?
    Wo liegt "update64.exe" denn ?
    Außerdem, schau dir mal msdn.microsoft.com/de-de/libra…sstartinfo(v=vs.110).aspx an
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @reditec Und da nerve ich mal wieder: Eigene Updater sind extrem unsicher.
    Du kannst durch die Verwendung eines sicheren Dir 1) das Problem hier sparen und 2) sind die Updates echt und Deine Clients vor Malware geschützt.
    Updater - Warum sollte man eigene Updater vermeiden?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    reditec schrieb:

    Bei mir kommt aktuell immer: Das System kann die angegebene Datei nicht finden.

    Da wird das System wohl recht haben.
    Du musst dem Prozess noch sagen, wo sich das Programm befindet und auch den Parameter (den Du Attribut nennst) separat übergeben.

    Als ungefähres Beispiel:

    VB.NET-Quellcode

    1. Dim process As New Process
    2. process.StartInfo.FileName = "IchBinDasProgramm.exe"
    3. process.StartInfo.Arguments = "/P /U /P /S" 'der/die Parameter
    4. process.StartInfo.WorkingDirectory = "D:\PfadZumProgramm\"
    5. process.StartInfo.UseShellExecute = False
    6. process.StartInfo.ErrorDialog = False
    7. process.StartInfo.RedirectStandardOutput = True
    8. process.Start()
    9. process.WaitForExit()

    Schön und gut, aber hast Du Dir meinen Post zu Herzen genommen? ;)
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ich möchte gerne eine Datei mit Attribut ausführen.
    Was soll dieser Attribut bewirken ?

    Und wieso WaitForExit(50000000), was soll das genau bewirken ?

    Was stellst du dir darunter vor ? bei - 50000000 - denke ich du willst warten bis update64.exe zu geht - fertig ist .
    Oder ?

    VB.NET-Quellcode

    1. Dim startInfo As New Process
    2. startInfo.StartInfo.FileName = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "VLC_Player_Update_32_bit.exe")
    3. startInfo.StartInfo.Arguments = ""
    4. startInfo.StartInfo.UseShellExecute = True
    5. startInfo.Start()
    6. startInfo.WaitForExit()
    7. startInfo.Close()


    Wartet bis - VLC_Player_Update_32_bit.exe - fertig und zu ist .

    VB.NET-Quellcode

    1. Try
    2. If Registry.LocalMachine.OpenSubKey("Hardware\Description\System\CentralProcessor\0").GetValue("Identifier").ToString.Contains("64") = True Then
    3. Dim startInfo As New Process
    4. startInfo.StartInfo.FileName = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "VLC_Player_Update_64_bit.exe")
    5. startInfo.StartInfo.Arguments = ""
    6. startInfo.StartInfo.UseShellExecute = True
    7. startInfo.Start()
    8. startInfo.WaitForExit()
    9. startInfo.Close()
    10. Else
    11. Dim startInfo As New Process
    12. startInfo.StartInfo.FileName = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Desktop, "VLC_Player_Update_32_bit.exe")
    13. startInfo.StartInfo.Arguments = ""
    14. startInfo.StartInfo.UseShellExecute = True
    15. startInfo.Start()
    16. startInfo.WaitForExit()
    17. startInfo.Close()
    18. End If
    19. Catch ex As Exception
    20. MessageBox.Show(ex.Message, "Info !")'Anzeigen wie - Abbruch - Fehler
    21. End Try

    Dieser Beitrag wurde bereits 6 mal editiert, zuletzt von „TVX“ ()

    @reditec Es genügt, die Datai-Auswahl in das If zu packen, der Rest ist in beiden Fällen identisch. Vor das If die Deklaration, danach den Rest.
    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).
    Programmierfragen über PN / Konversation werden ignoriert!