Vista Anwendung Thumbnail
-
06-09-2019 - |
Frage
Mit dem Design, wird die Symbolleiste Anwendung Miniaturansicht auf Vista nicht aktualisiert werden, wenn eine Anwendung minimiert wird, da die minimierten Fenster selbst sind nicht neu erstellt. Für eine Überwachungsanwendung Ich habe, wäre es sinnvoll sein, die Anwendung Thumbnail zu aktualisieren, während die Anwendung minimiert bleibt. Ich bin mit Delphi 2009. Kann mir jemand eine gute Abhilfe für dieses vorschlagen?
HMCG
Lösung
Das ist ein interessanter, den ich denke, es mit dem Windows-API in irgendeine Weise möglich ist, ich bin im Moment nicht auf einem Vista-Rechner, aber ich denke, Windows Media Player noch das Video zeigt zu spielen, wenn minimiert wird.
Ich nehme ein Hack wäre, um die Schaltfläche minimieren außer Kraft setzen und die Form außerhalb des Bildschirms zu bewegen, dann erkennt die Form wieder aktiv zu werden und es wieder auf den alten Standort. Dies würde bedeuten, die Form aus der Sicht ist aber nicht minimiert werden.
Andere Tipps
Ich fand etwas in einem Microsoft-Entwicklungsforum , die dieses Thema anspricht. Die Frage war, über eine Möglichkeit, eine benutzerdefinierte Miniaturansicht zur Verfügung zu stellen, zu denen Microsoft Leonardo Blanco mit dieser antwortete:
Wir machen keine [t] Plan, ein Mittel vorzusehen, um eine Anwendung zu erstellen ein benutzerdefinierte alternative Miniaturdarstellung, aber wir werden bietet eine API aus dem normalen Miniaturbild entscheiden zusammen ....
Es sieht aus wie diese Pläne haben in der Zwischenzeit geändert könnte, von der Existenz in MSDN der Funktionen zu urteilen DwmSetIconicLivePreviewBitmap
und DwmSetIconicThumbnail
Windows 7. Gerade jetzt diese Einträge nicht wirklich irgendwelche Erklärungen enthalten, aber ihre Namen sind vielversprechend.
Jemand wies darauf hin, dass die Miniaturansicht für Windows Media Player bewegt zeigt Video sogar, während das Fenster minimiert wird. Blanco Erklärung:
WMP verwendet eine neue Video-Pipeline, die direkt an den Gesprächen [Desktop Window Manager], um eine flüssigere Wiedergabe zu erreichen Erfahrung. Diese Pipeline basiert auf [DirectX] und nicht hängen von Sichtbarkeit Informationsfenster, so dass die Thumbnail kann am Leben gehalten werden, selbst wenn das Fenster minimiert wird, wie solange die App Rahmen vorlegen wird fortgesetzt. Sie können feststellen,, jedoch, dass die Benutzeroberfläche um das Video ist nicht mehr leben (Dies ist schwierig zu beobachten, weil die Benutzeroberfläche um das Video aktualisiert nicht in der Regel). Für ein bisschen mehr Informationen zu diesem Verfahren, finden Sie in der
DwmSetPresentParameters
API.
Ich fürchte ich nichts mehr darüber finden. Dokumentation für DWM Funktionen ist spärlich.
die Art Ihrer Anwendung gegeben, vielleicht ist es eine Überlegung wert, einen Gadget auf der Windows Sidebar leben.
Ich weiß nicht, ob diese Abhilfe noch in Delphi 2009 funktioniert: Überschreibung CreateParams zu set GetDesktopWindow als WndParent.
Ich habe Application.Title in der Vergangenheit geändert einige Informationen in der Taskleiste Schaltfläche anzuzeigen. Ich nicht glaube, dies bewirkt, dass ein erneutes Zeichnen des Symbols?
In Delphi 2007 Ihr Hauptformular ist auf der Taskleiste, wenn Sie
Application.MainFormOnTaskbar := True;
zu halten, zu aktualisieren, dann müssen Sie Ihre Anwendung zu verhindern, zu minimieren und stattdessen nur um es nach hinten zu bewegen. Sie können dies tun, indem Sie ein TApplicationEvents setzen auf dem Formular und Zuweisen eines Event-Handler zum OnMinimize Ereignis und rufen Sie dann Application.Restore drin. Sie wollen Ihre eigene Minimierung Zustand zu verfolgen und sicherzustellen, dass Sie alle anderen Formen verstecken (wenn Sie sie haben) und nur Ihre Hauptform sichtbar, aber auf dem niedrigsten Z-Reihenfolge, wenn es „ein Minimum reduziert.“
Ich glaube nicht, Windows Vista können Sie Formulare aus dem Bildschirm zu verschieben, oder Sie können das nur tun. Vielleicht gibt es einen Hack um die.
Viel Glück!
gehen Sie zu Ihrem Source-Projekt und ändern Application.MainFormOnTaskbar auf false: Application.MainFormOnTaskbar: = false;
Viele Grüße, Mauricio