ShellIconOverlayIdentifiers - warum so wenige?


84

Zu diesem Zeitpunkt weiß jeder, dass die Anzahl ShellIconOverlayIdentifiers(von MSDN) begrenzt ist:

Die Anzahl der verschiedenen Symbolüberlagerungshandler, die das System unterstützen kann, ist durch den verfügbaren Speicherplatz für Symbolüberlagerungen in der Systemabbildliste begrenzt. Derzeit sind fünfzehn Steckplätze für Symbolüberlagerungen vorgesehen, von denen einige vom System reserviert werden. Aus diesem Grund sollten Symbol-Overlay-Handler nur implementiert werden, wenn es keine zufriedenstellenden Alternativen gibt

Ich kann das 15-Overlay-Limit in Windows 95 verstehen. Aber gibt es in einer Umgebung, in der es viele RAMs, zahlreiche Kerne und GPUs gibt, einen technischen Grund für eine so geringe Anzahl in einem modernen Betriebssystem?

Und warum ist dieser Wert nicht konfigurierbar?

Bevor Sie die Antwort "Leistung" geben, sollten Sie Folgendes berücksichtigen: Windows ermöglicht eine Konfiguration, bei der Sie die Leistung beeinträchtigen können. Warum sollten Sie dieses Problem speziell auswählen?


Warum ist das mit "tortoisesvn" gekennzeichnet? Vermisse ich etwas
Cody Grey

19
Ich dachte, ich wäre schlau, da tortoisesvn die am häufigsten erwähnte App ist, wenn es um übermäßige Einschränkungen von Symbolen geht - hauptsächlich, weil 9 Ihrer verfügbaren Slots benötigt werden. Das Tag wurde entfernt.
Rbellamy

1
Die Einschränkungen sind unter Windows 10 immer noch dieselben. Ich weiß auch nicht warum.
Gohan

Antworten:


86

Ich bezweifle, dass Sie eine Antwort erhalten, die die technischen Einschränkungen und die Auswirkungen auf die Designauswahl berücksichtigt, es sei denn, jemand hier arbeitet zufällig im Windows Shell-Team. Aber ich werde es versuchen...

Ich vermute, dass es keine technischen Einschränkungen gibt, oder zumindest gibt es jetzt keine. Der wahre Grund ist vermutlich, dass sich niemand die Zeit genommen hat, sich hinzusetzen und den Code, das Design und die Spezifikation zu aktualisieren, um diese Einschränkung aufzuheben. Funktionen sind nicht standardmäßig implementiert, und nur weil sich die Computerumgebung in den letzten Jahren geändert hat, bedeutet dies nicht, dass sich jemand hingesetzt und Windows neu geschrieben hat, um alle diese Änderungen voll auszunutzen.

Sie sollten auch berücksichtigen, dass dies höchstwahrscheinlich eine bewusste Designentscheidung und keine auferlegte Einschränkung ist. Raymond Chen (die tatsächlich tut Arbeit auf dem Shell - Team) veröffentlichte einen Blog - Eintrag zu dem Aufruhr über Windows reagiert 7 die „sharing Hand“ Overlay entfernen. Er macht ein überzeugendes Argument dafür, dass die Symbolüberlagerung wirklich keine wünschenswerte Art der Anzeige von Informationen ist (über die Tatsache hinaus, dass das System auf 15 beschränkt ist) [Hervorhebung hinzugefügt]:

Im Allgemeinen sind Überlagerungen keine gute Möglichkeit, Informationen darzustellen, da es nur eine Überlagerung pro Symbol geben kann und maximal 15 Überlagerungen pro ImageList vorhanden sind. Wenn es zwei oder mehr Überlagerungen gibt, die für einen Gegenstand gelten, gewinnt eine und die anderen verlieren. Zu diesem Zeitpunkt verringert sich der Wert der Überlagerung, um zu bestimmen, welche Eigenschaften für einen Gegenstand gelten, da dies der einzige Weg ist, um sicher zu sein Wenn eine Eigenschaft fehlt, wird überhaupt keine Überlagerung angezeigt. (Wenn Sie eine andere Überlagerung sehen, können Sie nicht feststellen, ob Ihre Eigenschaft fehlt oder ob diese andere Überlagerung anstelle Ihrer angezeigt wird.)

Es scheint mir vernünftig, dass sich die zusätzliche Unordnung, die der Shell hinzugefügt wird, in den meisten Fällen der realen Welt einfach nicht lohnt. Das Windows Shell-Team kam offensichtlich zu dem gleichen Ergebnis und schnitt die Überlagerung "Hand teilen" ab. Raymonds direkte Erklärung:

Angesichts der Änderungen in der Art und Weise, wie Benutzer Computer verwenden, wird das Teilen von Informationen immer mehr zum Standardstatus. Wenn Sie eine HomeGroup einrichten, wird so ziemlich alles geteilt. Um die visuelle Unordnung zu beseitigen, wurden die Informationen in den Detailbereich verschoben.

Ich weiß, dass Sie ausdrücklich darum gebeten haben, die Leistung nicht zu erwähnen, aber Windows versucht wirklich , Sie davon abzuhalten, sich in den Fuß zu schießen. Benutzer fordern Reaktionsfähigkeit in der Shell, und Overlay-Symbole können dies beeinträchtigen. Als weiterer Beweis dafür, dass sie nicht die Priorität haben , züchtigt ein anderer Blog-Beitrag des gleichen Raymond Chen:

Ein weiteres Beispiel für Anwendungen mit einer egoistischen Sicht auf die Leistung stammt von einem Unternehmen, das einen Icon-Overlay-Handler entwickelt hat. Die Shell behandelt die Overlay-Berechnung als Element mit niedriger Priorität, da es wichtiger ist, Symbole auf dem Bildschirm anzuzeigen, damit der Benutzer beginnen kann, das zu tun, was er tun möchte. Die Dekorationen können später kommen. Diese Firma wollte wissen, ob es eine Möglichkeit gibt, ihre Leistung zu verbessern und ihre Überlagerung auf den Bildschirm zu bringen, noch bevor das Symbol angezeigt wird, was eine phänomenal egoistische Interpretation von "Leistung" demonstriert.


15
Hervorragende Resonanz. Die bessere Frage lautet also möglicherweise: "Was ist eine Alternative zu Symbolüberlagerungen, bei denen dieselbe sofortige visuelle Warteschlange für den Status einer Datei / eines Ordners angezeigt wird?" Es scheint mir, dass die Verwendung von Symbolen, um mehr als nur den Inhaltstyp zu identifizieren, aus dem genauen Grund, den Raymond Chen erwähnt, immer wichtiger wird - mit der Verwischung der Grenzen des Dateispeicherorts, Statusangelegenheiten.
Rbellamy

3
Ich vermute sehr, dass es sich weder um eine bewusste Designentscheidung noch um eine auferlegte Einschränkung handelt, sondern um eine fette Designentscheidung, die vor langer Zeit getroffen wurde (ca. Win 95) und aufgrund der installierten Benutzerbasis nie behoben wurde. Die dümmste Entscheidung ist, dass jede Overlay-Erweiterung nur ein Symbol-Overlay unterstützen kann und die Shell für jede Datei nur "gilt?" Fragt. Es sollte sein, dass jedes Overlay ein Array von Symbolen unterstützt und die Shell für jede Datei "Welches Symbol-Overlay?" Fragt, auf die die Erweiterung möglicherweise als eine Option "Ich bewerbe mich nicht" antwortet.
Keith Robertson

9
Interessant, dass MS dies akzeptiert hat, indem sie meinen ShellIconOverlayIdentifiersRegistrierungseintrag ab Win10 mit OneDrive Crud verwischt hat. Für einen Entwickler, der so etwas wie TortoiseSVN / GIT verwendet, sind diese Überlagerungen von entscheidender Bedeutung, und die Tatsache, dass nur eine angezeigt werden kann, ist ein Grund, WARUM .
Alex McMillan

2
Von all den Dingen, die Windows 10 kaputt gemacht hat, @Alex, ist dieses ziemlich weit unten auf meiner Liste. Die Entscheidung, OneDrive den Benutzern aufzuzwingen, war eindeutig eine Entscheidung der Marketingabteilung und nicht des Shell-Teams. Niemand hat Zeit und Geld eingeplant, um die Shell-Imagelisten zu verbessern und benutzerfreundlich zu gestalten.
Cody Gray

6
Dies ist keine akzeptable Antwort. Ich weiß, dass ein Teil davon von Microsoft selbst stammt, daher ist die Unannehmlichkeit für den Microsoft-Ansatz. Siehe mein Beispiel: Ich habe Ordner mit DropBox, Google Drive, Mega, OneDrive und Tortoise SVN synchronisiert und möchte aufrichtig alle Überlagerungen in allen Ordnern korrekt anzeigen, kann dies jedoch aufgrund dieser dummen Einschränkung nicht.
Carlos B. Feitoza Filho

13

Hervorragende Resonanz auf die praktischen Fragen von Cody. Warum 15 und nicht irgendeine andere Zahl, das Limit wird in das ImageList- Steuerelement selbst eingebrannt .


4

Das ist alles sehr gut und schön, wie von Cody Gray erklärt, aber ehrlich gesagt ist es ziemlich einfallslos und klingt, wie hinter den Kulissen berichtet, ein bisschen frustriert.

Im Jahr 2015 und mit Windows 10 kann und muss es sicherlich eine bessere Fähigkeit geben, da ich festgestellt habe, dass etwa dreißig Overlays vorhanden sind und diejenigen priorisieren mussten, die ich am meisten sehen wollte, worüber sich die meisten Menschen überhaupt keine Sorgen machen sollen. Ich sehe auch aggressive Anbieter wie Box, die im Wettbewerb stehen, um Prioritäten zu setzen, und das wird niemals gut gehen.

Hier ist eine Möglichkeit: Was wäre, wenn mehrfach überlagerte Symbole einen generischen Überlagerungsindikator hätten? eine kleine Rechteckmatrix mit mehreren Farben wie die Google Chrome Apps-Schaltfläche? Einfach überlagert würde nur die Überlagerung aus einer langen Liste anzeigen.

Wenn der Mauszeiger dann auf das Symbol trifft, werden in einem kleinen Flyout-Fenster alle Symbolvarianten gesammelt, die angezeigt werden sollen (bei kleiner oder etwas größerer Symbolgröße). Jedes überlagerte Symbol gibt per Tooltip an, was es ist, wenn Sie mit der Maus darüber fahren.

Jetzt können Sie alle Symbolüberlagerungen verwenden, die Sie für den Status in verschiedenen Clouds, für Repository-Anzeigen wie für Schildkröten-Tools usw. benötigen.


2
Die Idee hinter den Überlagerungen ist, dass Sie in der Lage sein sollten, den Status des beobachteten Objekts "auf einen Blick" zu identifizieren. Ihr Plan ist zwar kreativ, erfordert jedoch "Hände auf Tastatur oder Maus", um die Informationen anzuzeigen. Nicht, dass ich eine bessere Lösung hätte ...
Rbellamy

Wenn sie sich in einem Flyout-Fenster befinden müssen, können Sie die Informationen einfach in die Informationsleiste oder das Vorschaufenster oder an eine andere Stelle in der Benutzeroberfläche einfügen. Der springende Punkt bei Überlagerungssymbolen ist, dass sie tatsächlich überlagert und auf einen Blick sichtbar sind.
Cody Gray
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.