Prozess aus Liste erstellen

  • VB.NET

Es gibt 22 Antworten in diesem Thema. Der letzte Beitrag () ist von danii1005.

    Prozess aus Liste erstellen

    Hallo,

    Ich habe eine Frage an euch.

    Ich möchte Dateien die zuvor heruntergeladen und der Reihe nach in eine Liste geschrieben wurden nacheinander ausführen.

    Die Dateien werden in die Liste geschrieben und als *.txt gespeichert:

    VB.NET-Quellcode

    1. Dim stream As New IO.StreamWriter("C:\heruntergeladen.txt")
    2. For Each item As String In heruntergeladen
    3. stream.WriteLine(item)
    4. Next
    5. stream.Close()


    Die liste *.txt sieht dann ungefähr so aus:

    Quellcode

    1. programm1.exe
    2. programm2.exe
    3. programm3.exe


    Jetzt möchte ich die Dateien aus dieser .txt der Reihe nach aufrufen.

    Aber hier bin ich mit meinem Latein am Ende.

    Ich weiß zwar wie man einen Prozess erstellt und darauf wartet bis er geschlossen wurde.

    VB.NET-Quellcode

    1. Dim prozess As New Process
    2. prozess.StartInfo.FileName = ("C:/programm.exe")
    3. prozess.Start()
    4. prozess.WaitForExit()


    Nur werden die Dateien ja individuell ausgewählt und heruntergeladen.
    Es muss doch eine möglichkeit geben über einen Streamreader eine zeile auszulesen und daraus einen prozess zu erstellen.

    lg
    Danii
    Hallo,

    Das Problem liegt dabei, dass ich nicht weiß wie die Datei heißt. Da man mehrere Dateien aus einer Checkedlistbox auswählt.
    Ich will diese "ubekannte" Datei als Prozess starten. Hoffe es ist jetzt verständlicher formuliert.

    lg
    Danii
    • Dateien einen Verzeichenis aufliesten (Beispiele und Links findest in Forum)
    • Dateien ausführen: Process.Start ("Deine_Datei.com")
    • Alle Dateien nach die reiche öffnen, verwende For Each schleife

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

    Hallo,

    Hier mal ein Screenshot:



    in der CheckedListbox wird eines oder mehrere der Programme ausgewählt.

    Dieses wird dann aus dem Internet heruntergeladen und der Dateiname mit Dateiendung in eine .txt gespeichert.

    Nun will ich mit einem Klick auf Plugins installieren jedes heruntergeladene Programm öffnen.

    Auswählen -> Downloaden -> Speichern -> Ausführen.

    Ich bin mittlerweile so weit, dass ich die Datei nurnoch ausführen muss.

    Und da liegt mein Problem. ;(

    Edit:

    Hier noch der Quellcode mit dem ich es versucht habe. Hierbei passiert allerdings garnichts :

    VB.NET-Quellcode

    1. Dim streamwr As New IO.StreamWriter("C:\heruntergeladen.txt")
    2. For Each item As String In heruntergeladen
    3. streamwr.WriteLine(item)
    4. Next
    5. streamwr.Close()
    6. If IO.File.Exists("C:\heruntergeladen.txt") Then
    7. Dim leser As String
    8. leser = ("C:\heruntergeladen.txt")
    9. Dim File As New IO.FileInfo(leser)
    10. If File.Exists() = True Then
    11. iStream = New IO.StreamReader(leser)
    12. Do
    13. If IsNothing(line) Then
    14. installer.CancelAsync()
    15. Else
    16. Dim dateiname As String = IO.Path.GetFileName(line)
    17. Dim asd As New Process
    18. asd.StartInfo.FileName = ("C:\" & line)
    19. asd.Start()
    20. SendKeys.Send(pfad)
    21. asd.WaitForExit()
    22. IO.File.Delete("C:\" & line)
    23. End If
    24. Loop
    25. iStream.Close()
    26. End If
    27. End If


    lg
    Danii
    für was herunter geladene dateien in TXT speichern...du lädst die dateien in benstimmte verzeichnis runter...die geladene Dateien kannst direkt ausführen (ohne TXT).....wie du realisierst siehe letze post !
    Wenn du mit TXT machst, dann lese deine Datei zeilenweise aus, in Forum findest tonnenweise beispiele !

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

    @dani die Sache mit SendKeys verstehe ich garnicht, und den Rest nur zum Teil. Ist es das hier was Du eigentlich durchführen möchtest:

    VB.NET-Quellcode

    1. ' file existiert nicht ? => Return
    2. If Not IO.File.Exists("C:\heruntergeladen.txt") Then Return
    3. ' streamreader definieren
    4. Dim sr As New StreamReader("C:\heruntergeladen.txt")
    5. ' Einträge durchlaufen
    6. While sr.Peek <> -1
    7. ' plugin Namen lesen
    8. Dim plugin As String = sr.ReadLine.Trim
    9. ' prüfen => ansonsten weiter
    10. Dim fn As String = "C:\" & plugin
    11. If Not IO.File.Exists(fn) Then Continue While
    12. ' starten
    13. Dim p As New Process
    14. p.StartInfo.FileName = fn
    15. p.Start()
    16. p.WaitForExit()
    17. ' löschen der Datei
    18. IO.File.Delete(fn)
    19. End While
    20. ' all done
    21. sr.Close()


    @SystemUnknow die .txt Datei ist soweit ich sehen kann dafür da die Reihenfolge einzuhalten. Aber warum erst zwischenspeichern und nicht gleich die Liste(??) heruntergeladen benutzen ?

    Fragen über Fragen - ein Teufelskreis ( TV Kaiser)
    @Kanagroo: er lädt die dateien in bestimmten verzeichnis. Man kann die Dateien eines ordners aufliesten (z.b in array) dann mit Schleife nach reichefolge ausführen.
    Ok wenn die Dateien werden in verschiedliche Ordner runter geladen, dann TXT schon hilfreich. Einfach TXT zeilenweise auslesen (Anwendung +Pfad) und in die reihe folge ausführen.

    @Threadsteller: etwas SuFu benutzen währe für dich große hilfe:
    [VB 2008] Wie Textdatei Zeilenweise auslesen? Hilfe!!
    @ Kanguroo

    Vielen Dank das meinte ich. Tut mir leid falls ich mich unklar ausgedrückt habe.

    Die Reihenfolge ist mir eigentilich egal^^....

    Es ist nur wichtig, dass die .exe geöffnet wird.

    Danke für die schnellen antworten.

    Ps:

    Eine Frage habe ich noch.

    Wofür steht:

    VB.NET-Quellcode

    1. Dim sr As New StreamReader("C:\heruntergeladen.txt")
    2. ' Einträge durchlaufen
    3. While sr.Peek <> -1


    sr.Peek <> -1 bedeutet soviel wie eine Zeile nach unten?

    Edit:

    VB.NET-Quellcode

    1. Sendkeys.Send(pfad)


    soll in den geöffneten installer automatisch den pfad eintragen.

    lg
    Danii

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

    danii1005 schrieb:

    Die Reihenfolge ist mir eigentilich egal

    Dann brauchst Du wie SystemUnknow schon vorgeschlagen hat, die TextDatei überhaupt nicht , sondern kannst gleich der Reihe nach alle .exe Files in diesem Ordner ausführen - oder ?

    danii1005 schrieb:

    sr.Peek <> -1 bedeutet soviel wie eine Zeile nach unten?

    Schau Dir hier an , wie man eine Text-Datei zeilenweise durchliest. Mit sr.Peek schaut er voraus auf die nächste Zeile ob er das Zeilenende erreicht hat, einlesen tut er dabei noch nichts.
    Hallo,

    Okay das werd ich mir anschauen. Die .txt war dazu da um zu überprüfen ob die Liste auch existiert.

    Hast du eine Ahnung wie ich den Sendkeys Befehl ausweichen könnte? Ich will einen pfad, der zuvor angegeben wurde automatisch in die sich öffnende .exe eintragen.

    lg
    Danii

    danii1005 schrieb:

    Hast du eine Ahnung wie ich den Sendkeys Befehl ausweichen könnte?

    Sorry nein, nicht direkt. Haben die Plugins denn immer den gleichen Aufbau, d.h. Textbox im sich öffnenden Fenster ? Und wie schickst Du sie ab ? Haben die evtl CommandLine-Argumente für silent install ?

    Man kann bestimmt den Handle des Windows über Process.MainWindowHandle rausbekommen, aber danach wird's eklig :S