2017-12-01 5 views
0

Die Windows-Taskleiste enthält einen Bereich namens "Benachrichtigungsbereich" oder "Systembereich", in dem kleine Symbole für Apps angezeigt werden, die im Hintergrund ausgeführt werden und/oder Systembenachrichtigungen anzeigen möchten. Wenn sich die Taskleiste am unteren oder oberen Bildschirmrand befindet, wird dieser Bereich rechts angezeigt.Gibt es eine Win32-API zur Überwachung, Ort und Ausrichtung der Taskleiste "Notification Area"?

In Multi-Monitor-Setups wird dieser "Benachrichtigungsbereich" nur auf einer der Taskleisten angezeigt, auch wenn die Taskleiste auf allen Monitoren angezeigt wird. Sie können festlegen, auf welcher Anzeige der Benachrichtigungsbereich angezeigt wird, indem Sie die Taskleiste auf die gewünschte Anzeige ziehen.

Meine Frage ist:

Gibt es eine einfache API, um den Bildschirm, die Lage und Orientierung der Task-Leiste „Notification Area“ zu finden?

Ich fand ein Beispiel, das searches for the Shell_TrayWnd window handle, und dann Mathe auf seine Position versuchen und herauszufinden, welche Ausrichtung es ist (d. H. An welcher Kante des Bildschirms die Taskleiste ist).

Dies ist jedoch sehr fragil, da es auf dem aktuellen UI-Design der Windows-Taskleiste abhängt.

Windows 10 führte einen neuen common toast notification system ein, einschließlich eines Flyouts für die smarte Benachrichtigung. Auch wenn Sie den Benachrichtigungsbereich auf einen anderen Monitor verschoben haben, einschließlich der Schaltfläche zum Öffnen und Schließen des Systembenachrichtigungs-Flyouts, die flyout itself is still displayed on the "primary monitor".

Das obige deutet darauf hin, dass es möglicherweise keine Möglichkeit gibt, dies zu tun, als ob Microsoft eigene Benachrichtigungen nicht dem Notification Area folgen, gibt es möglicherweise keine Möglichkeit, dies praktisch zu tun. Jedoch schlägt Microsoft documentation of the notification area die sehr vernünftige Idee vor, dass Toast in der Nähe davon angezeigt werden sollte. Ich denke, dass sie einfach nicht an den Multi-Monitor-Fall gedacht haben.

microsoft toast location guideline

+0

Ich bin nicht ganz davon überzeugt, dass Microsofts Entscheidung/Implementierung/Bug Toast-Benachrichtigungen immer auf dem primären Bildschirm anzuzeigen, ist ein Hinweis darauf, dass es unmöglich ist, zu tun, was Sie wollen. Zum einen ist die Toast-Implementierung sehr wahrscheinlich Teil der Windows-Runtime/Universal Windows Platform und wird in einer Sandbox-Umgebung ausgeführt, die keinen Zugriff auf die vollständige Windows-API hat. Oder es könnte eine bewusste Entscheidung sein, aus welchem ​​Grund auch immer. Oder ein Fehler. Nichts, was Ihnen helfen könnte, Ihr unmittelbares Problem zu lösen, sondern nur ein Kommentar, der hervorhebt, dass dies nicht unbedingt eine Sackgasse ist. – IInspectable

Antwort

-1

Wenn Sie einige Fenster als Reaktion auf Tray-Icon Aktion zeigen wollen, gibt es keine Notwendigkeit manuell für Fach Ort zu suchen, weil Fach Nachricht entsprechende Cursor-Koordinaten als wparam enthalten wird. Selbst wenn das Ereignis über die Tastatur generiert wurde, enthält die Nachricht die Koordinaten der oberen linken Ecke des Symbols. Siehe NOTIFYICONDATA structure documentation

Verwandte Themen