2009-06-02 9 views
5

Das Design der Toolbar-Anwendungsminiatur auf Vista wird nicht aktualisiert, wenn eine Anwendung minimiert wird, da das minimierte Fenster selbst nicht neu gezeichnet wird. Für eine Überwachungsanwendung, die ich habe, wäre es nützlich, das Anwendungsminiaturbild zu aktualisieren, während die Anwendung minimiert bleibt. Ich verwende Delphi 2009. Kann jemand eine gute Abhilfe für dieses vorschlagen?Vista-Anwendung thumbnail

HMCG

Antwort

3

Das ist interessant Ich denke, es mit dem Windows-API in irgendeiner Weise möglich ist, ich bin nicht auf einem Vista-Rechner im Moment, aber ich denke, Windows Media Player noch die Video-Wiedergabe zeigt, wenn minimiert .

Ich vermute, ein Hack wäre, die Minimieren-Schaltfläche zu überschreiben und das Formular aus dem Bildschirm zu verschieben, dann erkennen, dass das Formular wieder aktiv wird und es zurück an den alten Speicherort verschiebt. Dies würde bedeuten, dass das Formular nicht sichtbar, aber nicht minimiert ist.

+0

das Formular aus dem Bildschirm würde wahrscheinlich bewegen arbeiten, aber ein bisschen ein bodge scheint. Nicht diese Bodies sind ausgeschlossen, obwohl .............. HMCG – HMcG

+0

Windows Media Player ist in der Tat diesen Trick gelungen. Es sei denn natürlich, sie übersteuern nur den Minimieren-Knopf und verschieben das Formular vom Bildschirm. – HMcG

+0

Ich habe gesagt, es ist ein Hack dort ist wahrscheinlich eine richtige Methode, aber wenn Sie es brauchen zu arbeiten und kann keine Lösung finden, ich glaube nicht, dass es Probleme verursachen wird. – PeteT

0

Ich habe Application.Title in der Vergangenheit geändert, um einige Informationen in der Taskleiste anzuzeigen. Ich nehme an, dass dies ein Neuzeichnen des Symbols verursacht?

+0

Ich glaube nicht, das OP fragt nach dem Symbol auf der Taskleiste, aber das Thumbnail ("Mini-Screenshot"), das in Vista angezeigt werden kann, damit Sie wissen, was das Fenster enthält, bevor Sie es wechseln. –

+0

Das Ändern des Application.Title scheint die Beschriftung der Taskleistenschaltfläche nicht mehr zu ändern. Ändern der Hauptformularbegriff, aber leider nicht neu zeichnen das Symbol (oder neu gezeichnet es mit dem gleichen Bild, vielleicht.) – HMcG

1

Ich weiß nicht, ob this workaround noch in Delphi 2009 funktioniert: überschreiben CreateParams, um GetDesktopWindow als WndParent festzulegen.

+0

Ja, das scheint immer noch in D2009 in Vista zu arbeiten, und die zweite Form hat auch ein Thumbnail, aber die Die Miniaturansicht wird bei der App nicht aktualisiert. ist minimiert. Nützlicher Trick, und das Verschieben des zweiten Fensters vom Bildschirm könnte mir den gewünschten Effekt geben. BTW, dies mit einem modalen Fenster zu tun hat einige "interessante" Nebenwirkungen ...... – HMcG

+0

Sollte dieser Trick notwendig sein, wenn Sie Application.MainFormOnTaskbar: = true? – Vegar

+0

MainFormOnTaskBar wurde in Delphi 2007 eingeführt, wenn ich mich nicht irre, und dieser Trick stammt aus dieser Zeit. –

0

In Delphi 2007 Ihr Hauptformular ist auf der Taskleiste, wenn Sie

Application.MainFormOnTaskbar := True; 

gesetzt 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 TApplicationEvents auf das Formular setzen und dem Ereignis OnMinimize einen Ereignishandler zuweisen und dann Application.Restore dort aufrufen. Sie sollten Ihren eigenen Minimierungsstatus verfolgen und sicherstellen, dass Sie alle anderen Formulare ausblenden (wenn Sie sie haben) und nur Ihr Hauptformular sichtbar haben, aber in der niedrigsten Z-Reihenfolge, wenn es "minimiert" ist.

Ich glaube nicht, dass Windows Vista Sie Formulare aus dem Bildschirm verschieben können, oder Sie könnten nur tun. Vielleicht gibt es da einen Hack.

Viel Glück!

2

Ich habe something in a Microsoft development forum gefunden, das dieses Thema behandelt. Die Frage war, über eine Möglichkeit, eine benutzerdefinierte Miniaturansicht zur Verfügung zu stellen, auf denen Microsofts Leonardo Blanco reagierte mit diesem:

Wir tun nicht [t] Plan ein Mittel für eine App, um eine individuellen alternative Miniaturdarstellung zu erstellen, aber wir werden eine API zur Verfügung stellen aus dem normalen Miniaturbild entscheidet ganz ....

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 für Windows 7. Gerade jetzt diese Einträge don Sie enthalten wirklich keine Erklärungen, aber ihre Namen sehen vielversprechend aus.

Jemand wies darauf hin, dass das Miniaturbild für Windows Media Player bewegte Videos anzeigt, während das Fenster minimiert ist.Blanco Erklärung:

WMP verwendet eine neue Video-Pipeline, die direkt an den [Desktop Window Manager] spricht eine flüssigere Wiedergabe Erfahrung zu erreichen. Diese Pipeline basiert auf [DirectX] und ist nicht abhängig von Informationen zur Fenstersichtbarkeit, sodass das Thumbnail am Leben erhalten werden kann, auch wenn das Fenster minimiert ist, wie solange die App Frames weitergibt. Sie bemerken vielleicht, jedoch, dass die Benutzeroberfläche um das Video nicht mehr live ist (das ist schwierig zu beobachten, weil die Benutzeroberfläche um das Video normalerweise nicht aktualisiert wird). Für ein bisschen mehr Informationen über diese Methode, siehe die DwmSetPresentParameters API.

Ich fürchte, ich kann nichts mehr darüber finden. Die Dokumentation für DWM-Funktionen ist spärlich.

Angesichts der Art Ihrer Anwendung, ist es vielleicht eine Überlegung wert gadget in der Windows Sidebar zu leben.

+0

Danke für den Link. Im Moment verschieben Sie das Formular nicht auf dem Bildschirm, sondern minimieren das Problem. Vielleicht bietet Windows 7 langfristig eine bessere Lösung. – HMcG