EXE mehrfach öffnen duch Auswahl aus DropDownList

  • VB.NET

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

    EXE mehrfach öffnen duch Auswahl aus DropDownList

    Hallo alle zusammen.

    Ich bin dabei ein Programm zu erstellen was mir einiges an Zeit ersparen soll am Tag.

    Langsam tun mir schon die Augen weh vom ganzen Googeln und Video Tutorials angucken. Daher frag ich jetzt mal nach Hilfe.

    Der Gedanke:

    Mein Project öffnen. (Evtl im Autostart verankern aber das kommt später)
    Per openfiledialog die exe wählen dessen Pfad in einer textbox angezeigt wird. "Erledigt"
    Aus DropDownList die Anzahl der zu startenden Prozesse wählen. "Erledigt"
    Bei klick auf Start Button überprüfen ob textbox2 leer ist, die vorgegeben exe gewählt wurde und ob eine Auswahl der DropDownList getätigt wurde. "Fehlt"
    Wenn Vorgaben erfüllt sind die im Pfad eingetragene exe so oft öffnen wie in der DropDownListe angegeben.

    Was ich habe ist:

    VB.NET-Quellcode

    1. Public Class Multistart
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. With OpenFileDialog1
    4. .Filter = "EXE Datei (*.exe)|*.exe"
    5. .FileName = ""
    6. End With
    7. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. Dim positiv As String = OpenFileDialog1.FileName
    9. TextBox1.Text = IO.Path.GetDirectoryName(positiv)
    10. TextBox2.Text = IO.Path.GetFileName(positiv)
    11. End If
    12. End Sub
    13. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    14. Dim curFile As String = (textbox2.text = ("test.exe"))
    15. Console.WriteLine(If(File.Exists(curFile), "File exists.", "File does not exist."))
    16. If ComboBox1.SelectedItem & TextBox2.Text = "" Then
    17. MsgBox("Prozess: Pfad oder Anzahl fehlt!")
    18. Else
    19. End If
    20. End Sub


    Hier komme ich nicht weiter.

    Wäre super wenn mir jemand helfen könnte.

    LG xxlynusxx

    xxlynusxx schrieb:

    so oft öffnen wie in der DropDownListe angegeben.
    Was soll die DropDown-Liste? Nimm ein NumericUpDown und feddich.
    Mit der GUI und diesem Code läuft das:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Public Class Form1
    2. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    3. Button2.Enabled = False
    4. Using dlg As New OpenFileDialog
    5. dlg.Filter = "EXE Dateien|*.exe"
    6. If dlg.ShowDialog = Windows.Forms.DialogResult.OK Then
    7. TextBox1.Text = dlg.FileName
    8. Button2.Enabled = True
    9. End If
    10. End Using
    11. End Sub
    12. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    13. For i = 1 To NumericUpDown1.Value
    14. Dim pr = New Process
    15. pr.StartInfo.FileName = TextBox1.Text
    16. pr.Start()
    17. pr.WaitForInputIdle(500)
    18. Next
    19. End Sub
    20. End Class

    Bilder
    • Start1.jpg

      6,26 kB, 300×155, 87 mal angesehen
    • Start2.jpg

      8,86 kB, 300×146, 85 mal angesehen
    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!
    Vielen Dank. Das hat mir schon sehr geholfen.

    Wie kann ich es nun einrichten das nur eine vorgegebene exe ausgewählt werden kann? z.b test.exe

    Ich habe es so probiert aber es geht nicht. er öffnet immernoch alle exe datein.

    VB.NET-Quellcode

    1. Public Class multistarter
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. With OpenFileDialog1
    4. .Filter = "EXE Datei (*.exe)|*.exe"
    5. .FileName = ""
    6. End With
    7. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. Dim positiv As String = OpenFileDialog1.FileName
    9. TextBox1.Text = OpenFileDialog1.FileName
    10. TextBox2.Text = IO.Path.GetFileName(positiv)
    11. End If
    12. Button2.Enabled = True
    13. End Sub
    14. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    15. Dim curFile As String = (TextBox2.Text = ("test.exe"))
    16. Console.WriteLine(If(File.Exists(curFile), "File exists.", "File does not exist."))
    17. For i = 1 To NumericUpDown1.Value
    18. Dim pr = New Process
    19. pr.StartInfo.FileName = TextBox1.Text
    20. pr.Start()
    21. pr.WaitForInputIdle(500)
    22. Next
    23. End Sub
    24. End Class

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

    Definiere

    xxlynusxx schrieb:

    das nur eine vorgegebene exe ausgewählt werden kann?

    VB.NET-Quellcode

    1. .MultiSeleft = False
    :?:
    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!
    ich meine das mit meinem programm nur ein bestimmter prozess gestartet werden kann. es soll z.b. nur die notepad.exe geöffnet werden können. soll verhindern das wenn man sich verklickt auf ein mal 100x der browser gestartet wird^^

    xxlynusxx schrieb:

    soll verhindern
    Dann nimm den OpenFileDialog raus und schreib den Pfad der Exe hart in das Programm.
    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!

    xxlynusxx schrieb:

    pfad zum ordner
    Nimm einen FolderBrowserDialog.
    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!
    Ich weiß nicht ob es so richtig gelöst ist aber es funktioniert. für verbesserungsvorschläge bin ich trotzdem dankbar.

    VB.NET-Quellcode

    1. Public Class multistarter
    2. Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
    3. With OpenFileDialog1
    4. .Filter = "EXE Datei (*.exe)|*.exe"
    5. .FileName = ""
    6. End With
    7. If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
    8. Dim positiv As String = OpenFileDialog1.FileName
    9. TextBox1.Text = OpenFileDialog1.FileName
    10. TextBox2.Text = IO.Path.GetFileName(positiv)
    11. End If
    12. Button3.Enabled = True
    13. End Sub
    14. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    15. My.Settings.pfad = TextBox1.Text
    16. My.Settings.prozess = TextBox2.Text
    17. My.Settings.Save()
    18. My.Settings.Reload()
    19. For i = 1 To NumericUpDown1.Value
    20. Dim pr = New Process
    21. pr.StartInfo.FileName = TextBox1.Text
    22. pr.Start()
    23. pr.WaitForInputIdle(500)
    24. Next
    25. End Sub
    26. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click
    27. If TextBox2.Text = ("test.exe") Then
    28. Button2.Enabled = True
    29. Button3.Enabled = False
    30. Else
    31. MsgBox("Bitte exe auswählen!")
    32. End If
    33. End Sub
    34. Private Sub multistarter_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    35. TextBox1.Text = My.Settings.pfad
    36. TextBox2.Text = My.Settings.prozess
    37. If TextBox2.Text = ("test.exe") Then
    38. Button2.Enabled = True
    39. End If
    40. End Sub
    41. End Class


    So werden die daten auch gleich gespeichert für jeden neuen programmaufruf.
    My.Settings.Save() und My.Settings.Reload() kannst du weglassen...
    Die geänderten Settings werden beim Schließen der Form sowieso automatisch gespeichert.
    Projekteigenschaften/Anwendung/My.Settings bei herunterfahren speichern (Checkbox=an)

    Als nächstes könntest du deine Textboxen an die Settings binden (lese dich dazu hier einmal hinein).

    Vergib deinen Controls ordentliche Namen, damit man den Code besser lesen kann...

    xxlynusxx schrieb:

    VB.NET-Quellcode

    1. TextBox2.Text = IO.Path.GetFileName(positiv)

    RodFromGermany schrieb:

    Nimm einen FolderBrowserDialog.
    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!