In Tray minimiertes Programm blendet auf dem Desktop eine verkürzte Titelzeile ein

  • Ich hätte da ein Problem, mit dem ich derzeit einfach nicht zurande komme!
    Mein Tool, das ich in VB .NET konzipiert habe, blendet bei der Verwendung der vorgesehenen Komandozeilenparameter auf manchen Rechnern, beim Minimieren in den Tray, links unten auf dem Desktop eine verkürzte Titelzeile ein, die nur aus dem Icon, einem "Schliessen" Kreuz und dem Systemmenü (ALT+Space) besteht.


    Dieses Problem zeigt sich nur, wenn ich die Kommandozeilenargumente auswerten lasse und auch nur auf manchen Rechnern, wie meinem 10,1" Tab (Windows 10 Home x86) mit der Auflösung 1280*800. Auf meinen Rechnern mit 1920*1080 oder 1600*900 passiert das nicht, das minimieren in den Tray oder wieder Einblenden des Forms funktioniert einwandfrei. Auch auf Rechnern mit Windows 10 Pro x64 passiert das - aber eben ohne eine feststellbare Methode.


    Das Progrämmchen kann mit den Parametern "-min" (minimiert starten), "-hide" (immer nur das Traysymbol anzeigen), "-vis" (beim Ein- oder Ausblenden zwischen Tray oder Taskbaransicht wechseln) entsprechend gesteuert werden. Nur genau das funktioniert bisher irgendwie nicht so "optimal"! Auf manchen Rechnern wird beim Ausblenden in den Tray links unten auf dem Desktop die verkürzte Ansicht der Titelleiste eingeblendet.


    Entferne ich die Auswertung der Kommandozeilenargumente und setze "ShowInTaskBar" und "NotifyIcon1.Visible" entsprechend meiner Vorstellungen "True" oder "False", dann unterbleibt das Einblenden dieser Titelzeile und es wird sauber aus- oder eingeblendet.


    Die relevanten Codeabschnitte:


    Ich kann mir auf dieses Verhalten leider keinen Reim machen, vielleicht hat da einer von euch eine Idee, woran das liegen könnte.

  • Welchen Startparameter verwendest du, damit der Fehler auftritt?
    Kannst du eventuell einen Screenshot von dem Problem machen? Bei meinem Testgerät mit dieser Auflösung scheint alles OK zu sein.
    Ich probiere das bei mir mal noch mit einem Tablett aus.

  • Gerne!



    Gestartet wird mit den Parametern "-min -hide", das passiert aber auf diesem und dem anderen Rechner @Eisbärs auch wenn nur "-hide" angegeben ist. Was mich etwas irritiert, ist dass @Eisbär dieses Verhalten abstellen kann, wenn er "-hide" und "-vis" kombiniert. Genau das konnte ich bisher aber ebensowenig nachvollziehen. Wie gesagt, bei mir kommt das nur auf dem Tablet vor und von Eisbär habe ich darüber berichtet bekommen.


    Noch ein Hinweis: Die Zeile "ShowInTaskbar = False" im Abschnitt "Form1_Onload" wurde von mir testweise eingefügt, standardmässig ist sie im Code nicht enthalten. Der EventHandler "Form1_Shown" war urspünglich der EventHandler "Form1_SizeChanged" und wurde im Zuge meiner Fehlersuche umgestellt. Beides brachte keine Änderung. Wenn ich If Me.WindowState <> FormWindowState.Minimized Then Stop einfüge um den Fehler aufzuspüren, läuft der ganze Anweisungsblock bis zum Ende durch. Von daher schliesse ich inzwischen aus, dass ich irgendwo einen syntaktischen Fehler drin habe und das Problem auf den betroffenen Rechnern selbst zu suchen sein muss.

  • Schaust du in diese API hier, wirst du feststellen, das ein Fenster nicht gleichzeitig versteckt und sichtbar angezeigt werden kann:

    Versuchst du in deinem Code das zu tun, addiert die Funktions von VB .Net mit Sicherheit einfach die Flags, die es dafür nutzt.
    Da dürfte wohl das Problem liegen.
    Bei Widersprüchen addiert Windows die Flags und macht nicht eines von beiden.

  • Ich würde, nachdem das Fenster aufgebaut wurde, nochmals per API ShowWindow das Fenster als versteckt markieren, wenn der Parameter -hide verwendet wurde. Das dürfte das Problem lösen.

  • Nein, das geht so auch nicht. Das würde im Programm nicht das tun, was du willst.
    Gleichzeitig als minimiertes Fenster und in der Taskleiste rechts geht scheinbar nicht korrekt.
    Wenn du so etwas korrekt umsetzen willst, musst du das Fenster bei Minimierung verstecken und es über das Trayicon einblenden lassen. Alles andere führt zu Widersprüchen und ungewollten Ergebnissen.

    2 Mal editiert, zuletzt von AxT ()

  • Select Case CoArg
    Case "-min", "/min"
    WindowState = FormWindowState.Minimized
    ShowInTaskbar = False

    Versuche mal, unter anderem an der Stelle ShowInTaskbar auf True zu stellen. Ich kenne aber leider deine Programmiersprache zu weinig, um dir da wirklich weiterhelfen zu können.


    Wenn das Fenster minimiert gestartet werden soll, muss es auf jeden Fall in der Taskleiste erscheinen.
    Windows kann bei Minimierung da ansonsten da kein Icon erzeugen.

    3 Mal editiert, zuletzt von AxT ()

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!