Jumplist übergibt keine Kommandozeilenparameter

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

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von kaifreeman.

    Jumplist übergibt keine Kommandozeilenparameter

    Hallo Leute,

    ich habe seit kurzem ein spannendes Problem mit einer Jumplist die eigentlich schon über ein Jahr tadellos funktioniert hat.
    Die Jumplist meines Programmes verwendet nur Jumpitems und ist nur dazu gedacht die zuletzt benutzten Dateien anzuzeigen.
    Bevor die Frage aufkommt, ja die Dateiendung ist registriert die Jumplist wird auch angezeigt aber interessanterweise wird an die App im OnStartup kein Kommandozeilenparameter übergeben.

    Folgender Code:
    Im Application Startup:

    VB.NET-Quellcode

    1. Protected Overrides Sub OnStartup(e As StartupEventArgs)
    2. 'Jumplist:
    3. JumpList.SetJumpList(Application.Current, myJumpList)
    4. end Sub


    Die myJumplist wird wie folgt aufgebaut:

    VB.NET-Quellcode

    1. Public WithEvents myJumpList As New JumpList


    Folgende Routine definiert die Jumplist:

    VB.NET-Quellcode

    1. Private Sub activate_jumplist()
    2. For Each item As cls_lastdb In __LastUsedDBs
    3. myJumpList.JumpItems.Add(item.jump_path)
    4. Next
    5. myJumpList.Apply()
    6. cls_logger.v_logger.Info("Jumplist applied")
    7. End Sub


    in der Klasse cls_lastdb ist eine Eigenschaft eingebaut die da heißt jump_path diese ist wie folg definiert:

    VB.NET-Quellcode

    1. Public ReadOnly Property jump_path As JumpPath
    2. Get
    3. Dim v_temp As New JumpPath
    4. With v_temp
    5. .Path = pfad
    6. If pinned Then
    7. .CustomCategory = "Angeheftet"
    8. Else
    9. .CustomCategory = "Zuletzt benutzt"
    10. End If
    11. End With
    12. Return v_temp
    13. End Get
    14. End Property


    Soweit zu gut die Jumpliste funktioniert wird angezeigt aber es wird im Startup kein Argument übergeben:

    VB.NET-Quellcode

    1. 'Wenn Argumente mitübergeben wurden dann den db_lastused austauschen:
    2. If e.Args.Count > 0 Then
    3. My.Settings.db_lastused = e.Args(0).ToString
    4. cls_logger.v_logger.Info("DB ausgetauscht: " & e.Args(0).ToString)
    5. Else
    6. cls_logger.v_logger.Info("Kein DB Argument übergeben - " & e.Args.Count.ToString)
    7. End If


    Hat jemand von euch eine Idee ich bastel jetzt seit Wochen an dem Thema rum komme aber auf keinen grünen Zweig :/
    Habe auch getestet auf meine CustomCategory zu verzichten und die vom System zu verwenden ebenfalls erfolglos :(
    mfG.
    Stephan
    Ich habe etwas Schwierigkeiten, das ganze Projekt (oder auch nur Teile davon) nachzubauen und damit nachzuvollziehen. Scheint eine Geschichte in WPF zu sein, richtig? Der passende Tag fehlt diesem Thread nämlich noch. Wenn man davon absieht, dass ich die Sache momentan nicht nachstellen kann, können wir wohl m.E. aber aus den geposteten Sachen wohl festhalten: Die ganze JumpList-Geschichte ist zwar nice to know, but irrelevant. Denn das Problem taucht doch wohl in Deiner OnStartup-Prozedur auf, wo die Args-Property von Parameter e zu fehlen scheinen. Daher könnten wir alles andere rausnehmen. Wenn Du Deine JumpScaresLists aus dem Projekt rausnimmst, wird dann e.Args befüllt? Andere Frage, auch ins Blaue hinein: Sollte da nicht noch in der OnStartup-Prozedur eine Zeile mit MyBase.OnStartup(e) auftauchen?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Mir geht es genauso wie @VaporiZed Un ich weiß nicht mal was ne "Jumplist" sein soll. Ist das nen selbst erfundener Begriff oder ist der bekannt? :)

    Ist dieses ganze Jump-Zeug relevant für dein Problem? Hier geht es doch darum, dass dein Programm mit Startparamethern gestartet wird, welche du in OnStartup auslesen willst, korrekt?

    Wo steht bei dir dieser Code?

    VB.NET-Quellcode

    1. If e.Args.Count > 0 Then
    2. My.Settings.db_lastused = e.Args(0).ToString
    3. cls_logger.v_logger.Info("DB ausgetauscht: " & e.Args(0).ToString)
    4. Else
    5. cls_logger.v_logger.Info("Kein DB Argument übergeben - " & e.Args.Count.ToString)
    6. End If

    Ich denke der sollte in der OnStartup stehen, ist aber aus deiner Beachreibung oben nicht ersichtlich.

    P.s. Es wäre schön, würdest du alle wichtigen Infos zu deinem Problem weitergehen (z.b. das du mit WPF arbeitest) und die irrelevanten infos weglässt.
    "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
    @kaifreeman
    @VaporiZed @mrMo
    Eine JumpList ist ein ContextMenu, das beim Klick auf das Icon der Anwendung in der Taskbar erscheint.
    Gugt Ihr hier
    und die MSDN.
    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!
    Was JumpLists sind, hatte ich noch gestern noch gefunden und auch, dass die wohl nur in WPF (vernünftig) zu basteln sind, aber dass das wohl ein ganz schöner Hickhack mit den Startparametern ist: Gut zu wissen, sollte ich die mal brauchen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Sry das ich mich erst jetzt melde hatte die Woche extrem zu tun.

    Danke für eure Antworten, das ihr Schwierigkeiten habt die Sub nachzubauen glaube ich weil ich nur Auszüge gepostet habe (da ist dann auch das Mybase.OnStartup(e) drinnen).

    Das Programm selbst übernimmt, wenn es durch eine Verknüpfung mit Kommandozeilenparametern gestartet wird erfolgreich den Pfad darum glaube ich es ist ein Problem der Jumplist an sich.
    @mrMo
    Im Code oben geht es darum das der Pfad zu einer Datenbank ausgetauscht wird welcher als Kommandozeilenparameter übergeben wird.

    Muss wohl den Tag korriegieren, eventuell kann ein Mod das Topic in das WPF Subforum verschieben.
    Ich habe vergessen bei den "Arguments" das %1 anzugeben daher wurde der Pfad nicht übergeben.
    Mehrere Wochen suche nur wegen so einem Unsinn.

    Danke für eure Hilfe.

    lg

    Edit:
    Ich hab den Fehler gefunden, ich habe bei der Neuerstellung des Setups im Installshield Express die Verknüpfung falsch definiert:


    Danke
    lg
    mfG.
    Stephan

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