Noch ein Problem mit Jumplist

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

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von us4711.

    Noch ein Problem mit Jumplist

    Meine güte: Die Jumplists in meinem Projekt bereiten mir mehr arbeit als der rest des programms.

    Soweit bin ich: Der Nutzer kann auf einen Jumplistlink klicken, der anschließend die steam.exe (im pfad "jlistpath") mit den parametern "-login Nutzername Passwort" startet. Das ganze klappt aber nur, wenn die steam.exe geschlossen ist:

    VB.NET-Quellcode

    1. Dim Jumplistlink As New JumpListLink(jlistpath, "aktion1")
    2. With Jumplistlink
    3. .Arguments = "-login Nuztername Passwort"
    4. End With
    5. jl.AddCustomCategories(catActions)
    6. jl.AddUserTasks(Jumplistling)
    7. jl.Refresh()


    folglich müsste ich bevor der JumpListLink aufgerufen wird die steam.exe schließen, falls vorhanden. etwa so:

    VB.NET-Quellcode

    1. Dim p() as process
    2. p = Process.GetProcessesByName("steam")
    3. If p.Count > 0 Then
    4. Process.GetProcessesByName("steam")(0).Kill()
    5. End If



    Wie aber kann ich dieses Prozess-Schließen über den Jumplistlink ausführen, bevor die steam.exe erneut mit meinen parametern gestartet wird?
    Du könntest wie du es ja schon machst prüfen ob Steam noch läuft und dann eine Meldung ausgeben das, dass Programm vorher manuell geschlossen werden muss.
    Ich bin nicht gerade der Freund davon Prozesse gnadenlos zu killen. Du kannst natürlich auch eine Messagebox bauen mit Ja/Nein in der du 1. Ausgibst das Steam noch läuft und 2. Nachfragst ob Steam geschlossen werden soll.
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.
    Also, das ist nicht mehr ganz trivial.
    Ich habe da einen Link, der eine funktionierende Lösung in C# anbietet:

    Jump List with Windows Forms

    Da ist dann allerdings non-managed code im Spiel, und etliche Helfer-Klassen.
    Aber: es funktioniert.
    Genau ist eigentlich das Prinzip auch hinter dem Link:
    • Das Programm mit der Jumplist ist eine Einzelinstanzanwendung, über Mutex getriggert.
    • Deine Jumplist ruft das eigene Programm nochmals auf, mit einem Parameter
    • Der wird Deinem Programm per Argument übergeben
    • Dein Programm erkennt den 2. ten Aufruf, holt sich die Argumente und weis von daher, welcher Jumplistlink geklickt wurde.
    • Dann kannste auswerten
    Ich bin da noch nicht ganz durch, aber unter Framework > 4.0 kann die Presentationframework.dll eingebunden werden, die dann entsprechende Funktionalitäten bietet.
    Wie gesagt, bin noch beim Graben.