System Tray Area überlagern

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

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

    System Tray Area überlagern

    Hi,

    in der rechten unteren Ecke eines Windows Bildschirms findet man üblicherweise die System Tray Area. Am rechten Rand dieses Bereichs werden Uhrzeit und Datum eingeblendet. (s. Screenshot 1)

    Da ich mir das Datum merken kann und meist auch weiß wie spät es ist, möchte ich diesen Bereich gern überlagern.

    Das mache ich mit einer Form, mit den Eigenschaften:

    FormBorderStyle: None
    ShownInTaskbar: False
    TopMost: True

    Die Form enthält nur eine PictureBox, die mit Dock=Fill maximal aufgeblasen ist.

    Durch anklicken mit der linken bzw. rechten Maustaste werden bestimmte Funktionen ausgeführt.

    Wie das aussieht, zeigt der Screenshot 2.

    Das klappt auch hervorragend.

    Es gibt nur ein Problem:

    Sobald man die TaskBar anklickt, rutscht sie in den Vordergrund und überlagert damit meine Form. Die Eigenschaft TopMost=True meiner Form kann das NICHTverhindern. Wie das dann ausssieht, zeigt Screenshot 3.

    Und damit ist es erst mal Essig mit meiner "schönen Idee".

    Kann man verhindern, dass meine Form hinter die TaskBar gestellt wird ?

    Vielleicht hat jemand ja eine schlaue Idee !

    LG
    Peter
    Bilder
    • s 2017-04-10 17-55-397.jpg

      3,4 kB, 336×36, 59 mal angesehen
    • s 2017-04-10 17-56-061.jpg

      3,32 kB, 336×36, 52 mal angesehen
    • s 2017-04-10 17-56-135.jpg

      3,42 kB, 336×36, 51 mal angesehen
    @Peter329 So richtig sollte das eigentlich nicht gehen dürfen.
    Wenn, dann müsstest Du dort die Ecke selbst bemalen, aber da kommt kein Maus-Event an.
    Die TaskBar ist ein Explorer mit besonderen Eigenschaften.
    Nur ein Vollbild mit TopMost = True wird über die TaskBar gemalt. Bei jedem anderen Vollbild ist die TaskBar zu sehen.
    ====
    Ich merke gerade, dass das bei W10 nicht mehr funktioniert. ;(
    Bei W7 ging das noch problemlos.
    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!
    Das hab ich mir dann fast schon so gedacht. Inbesondere dein Hinweis, dass sich mit W10 die Dinge ändern, hält mich davon ab, das weiter zu verfolgen ...

    Ich umgehe das Problem jetzt dahingehend, dass ich mein Feld ein bissl über die Taskbar nach oben hinausragen lasse. Wenn dann die Taskbar das Dingens überlagert, hab ich noch etwas zum Anklicken und kann so mein Feld wieder in den Vordergrund bringen.

    Lästig, aber ich kann damit leben. Wenn der Berg nicht zum Propheten kommt, dann muss der Prophet halt zum Berg kommen. :)

    Danke an den Ratgeber.

    LG
    Peter
    @Peter329 Muss es das lokale Fenster sein?
    Warum kein TrayIcon?
    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!
    Jau, das mit dem Tray Icon hab ich mir schon überlegt ...

    Aber die Tray Icons sind halt sehr "filigran" ...

    Aber trotzdem vielen Dank für eure Idee, die ja in anderen Fällen dann schon sehr hilfreich sein dürfte.

    LG
    Peter

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

    @Peter329 Probier mal eine "ewig" stehenbleibende Sprechblase beim TrayIcon, da dürftest Du auch Events von kriegen.
    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!