ShellIconOverlayIdentifiers - dlaczego tak mało?

84

W tym momencie wszyscy wiedzą, że istnieje ograniczenie liczby ShellIconOverlayIdentifiers(z MSDN):

Liczba różnych programów obsługi nakładek ikon, które może obsługiwać system, jest ograniczona ilością miejsca dostępnego dla nakładek ikon na liście obrazów systemu. Obecnie istnieje piętnaście miejsc przeznaczonych na nakładki ikon, z których część jest zarezerwowana przez system. Z tego powodu programy obsługi nakładek ikon powinny być wdrażane tylko wtedy, gdy nie ma zadowalających alternatyw

Rozumiem limit 15 nakładek w systemie Windows 95. Ale czy w środowisku, w którym jest gigantyczna pamięć RAM, wiele rdzeni i procesorów graficznych, jest jakiś techniczny powód tak małej liczby w nowoczesnym systemie operacyjnym?

Dlaczego tej wartości nie można konfigurować?

Przed udzieleniem odpowiedzi „wydajność” zastanów się: system Windows umożliwia konfigurację w taki sposób, że można zabić wydajność ... po co akurat wybierać ten problem?

rbellamy
źródło
Dlaczego to jest oznaczone jako „tortoisesvn”? Czy coś mi brakuje?
Cody Grey
19
Myślałem, że jestem sprytny, ponieważ żółwie vn to najczęściej wymieniana aplikacja, jeśli chodzi o nadmierne ograniczenia ikon - głównie dlatego, że zajmuje 9 z twoich dostępnych miejsc. Usunięto tag.
rbellamy
1
Ograniczenia są nadal takie same w systemie Windows 10. Też nie wiem dlaczego.
Gohan,

Odpowiedzi:

86

O ile ktoś tutaj nie będzie pracował w zespole Windows Shell, wątpię, czy uzyskasz odpowiedź, która naprawdę dotyczy ograniczeń technicznych i ich wpływu na wybór projektu. Ale spróbuję ...

Domyślam się, że nie ma żadnych ograniczeń technicznych, a przynajmniej nie ma ich teraz. Prawdziwym powodem jest prawdopodobnie to, że nikt nigdy nie poświęcił czasu, aby usiąść i zaktualizować kod, projekt i specyfikację, aby znieść to ograniczenie. Funkcje nie są implementowane domyślnie i tylko dlatego, że środowisko komputerowe zmieniło się w ciągu ostatnich kilku lat, nie oznacza, że ​​ktoś usiadł i przepisał system Windows, aby w pełni wykorzystać wszystkie te zmiany.

Należy również wziąć pod uwagę, że jest to bardziej niż prawdopodobne, świadomy wybór projektu, a nie narzucone ograniczenie. Raymond Chen (który faktycznie wykonuje pracę w zespole powłoki) opublikował wpis na blogu Odpowiadając na wrzawy o Windows 7 usuwając „dzielenie ręki” nakładkę. Przekonuje on, że nakładka ikon nie jest tak naprawdę pożądanym sposobem pokazywania informacji (poza i poza faktem, że system jest ograniczony do 15) [podkreślenie dodane]:

Ogólnie rzecz biorąc, nakładki nie są dobrym sposobem prezentowania informacji, ponieważ na każdą ikonę może przypadać tylko jedna nakładka , a na jedną ImageList może przypadać maksymalnie 15 nakładek. Jeśli istnieją dwie lub więcej nakładek, które mają zastosowanie do przedmiotu, to jedna wygra, a inne przegra, w którym to momencie wartość nakładki jako sposobu określenia, jakie właściwości mają zastosowanie do przedmiotu, maleje, ponieważ jedyny sposób, aby być pewnym brak właściwości występuje wtedy, gdy w ogóle nie widać nakładki. (Jeśli widzisz inną nakładkę, nie możesz stwierdzić, czy jest to spowodowane brakiem Twojej usługi, czy też tym, że ta inna nakładka jest wyświetlana zamiast Twojej).

Wydaje mi się rozsądne, że dodatkowy bałagan dodany do powłoki po prostu nie jest tego wart w większości przypadków w świecie rzeczywistym. Zespół Windows Shell najwyraźniej doszedł do tego samego wniosku i odciął nakładkę „udostępnianie ręki”. Bezpośrednie wyjaśnienie Raymonda:

Biorąc pod uwagę zmiany w sposobie korzystania z komputerów, udostępnianie informacji staje się w coraz większym stopniu stanem domyślnym. Po skonfigurowaniu grupy domowej prawie wszystko zostanie udostępnione. Aby usunąć wizualny bałagan, informacje zostały przeniesione do okienka szczegółów.

Wiem, że prosiłeś o nie wspominając o wydajności, ale Windows naprawdę stara się powstrzymać cię przed strzeleniem sobie w stopę. Użytkownicy wymagają responsywności w powłoce, a ikony nakładek mogą to zakłócać. Jako kolejny dowód na to, że nie są one priorytetem , kolejny post na blogu tego samego Raymonda Chena karci:

Inny przykład aplikacji mających egoistyczny pogląd na wydajność pochodzi od firmy opracowującej program obsługi nakładek ikon. Powłoka traktuje obliczenia nakładki jako element o niskim priorytecie, ponieważ ważniejsze jest uzyskanie ikon na ekranie, aby użytkownik mógł zacząć robić to, co chciał. Dekoracje mogą przyjść później. Ta firma chciała wiedzieć, czy istnieje sposób, w jaki mogliby poprawić swoje działanie i umieścić swoją nakładkę na ekranie jeszcze przed pojawieniem się ikony, demonstrując fenomenalnie samolubną interpretację „wydajności”.

Cody Gray
źródło
15
Doskonała odpowiedź. Może więc lepszym pytaniem jest: „Jaka jest alternatywa dla nakładek ikon, które prezentują tę samą natychmiastową wizualną kolejkę dotyczącą statusu pliku / folderu?” Wydaje mi się, że używanie ikon do robienia czegoś więcej niż do identyfikowania typu treści staje się coraz ważniejsze z dokładnego powodu, o którym wspomina Raymond Chen - wraz z rozmyciem granic lokalizacji plików, status MA ZNACZENIE.
rbellamy
3
Podejrzewam, że nie jest to ani świadomy wybór projektu, ani narzucone ograniczenie, ale głupia decyzja projektowa podjęta dawno temu (około Win 95) i nigdy nie naprawiona z powodu zainstalowanej bazy użytkowników. Najgłupszą decyzją jest to, że każde rozszerzenie nakładki może obsługiwać tylko jedną nakładkę ikony, a dla każdego pliku powłoka pyta tylko „stosuje?”. To powinno być to, że każda nakładka obsługuje szereg ikon, a dla każdego pliku powłoka pyta „która ikona nakładka?”, Do której rozszerzenie może odpowiedzieć „nie stosuje się” jako jednej opcji.
Keith Robertson
9
Ciekawe, że firma MS przyjęła to, mącąc mój ShellIconOverlayIdentifierswpis w rejestrze za pomocą OneDrive crud od Win10. Dla programisty używającego czegoś takiego jak TortoiseSVN / GIT te nakładki są kluczowe, a fakt, że można wyświetlić tylko jedną, jest powodem DLACZEGO .
Alex McMillan,
2
Ze wszystkich rzeczy, które zepsuł system Windows 10, @Alex, ta jest dość daleko na mojej liście. Decyzja o narzuceniu OneDrive użytkownikom była wyraźnie decyzją działu marketingu, a nie zespołu powłoki. Nikt nie planował czasu i pieniędzy, aby wrócić i ulepszyć listy obrazów powłoki, aby były przyjazne dla użytkownika.
Cody Gray
6
To nie jest akceptowalna odpowiedź. Wiem, że część pochodzi od samego Microsoft, więc niedopuszczalne jest podejście Microsoftu. Zobacz mój przykład: zsynchronizowałem foldery DropBox, Google Drive, Mega, OneDrive i Tortoise SVN i szczerze chciałbym zobaczyć wszystkie nakładki poprawnie we wszystkich folderach, ale nie mogę, ponieważ to głupie ograniczenie.
Carlos B. Feitoza Filho
13

Doskonała odpowiedź Cody'ego na kwestie praktyczne. Jeśli chodzi o to, dlaczego 15, a nie jakaś inna liczba, limit jest zapisany w samej kontrolce ImageList .

Bruce
źródło
4

To wszystko jest bardzo dobre i dobre, jak wyjaśnił Cody Gray, ale szczerze mówiąc, jest to dość niewyobrażalne i jak donoszono za kulisami, brzmi nieco sfrustrowany.

W 2015 roku i Windows 10 z pewnością może i musi być lepsza możliwość, ponieważ zauważyłem około trzydziestu nakładek i musiałem nadać priorytet tym, które najbardziej chciałem zobaczyć, a nie jest to, o co większość ludzi w ogóle się martwi. Widzę również agresywnych dostawców, takich jak Box, którzy nadmiernie konkurują, próbując nadać sobie priorytet, a to nigdy nie wyjdzie dobrze.

Oto możliwość: Co by było, gdyby wielokrotnie nakładane ikony miały ogólny wskaźnik nakładki; mała prostokątna matryca z wieloma kolorami, jak przycisk Google Chrome Apps? Pojedyncze nałożenie spowoduje wyświetlenie nakładki z długiej listy.

Następnie, gdy wskaźnik myszy napotka ikonę, małe wysuwane okno zbiera wszystkie odmiany ikon do wyświetlenia (przy małym rozmiarze ikony lub nieco większym). Każda nałożona ikona informuje z kolei o tym, co to jest, gdy najedziesz kursorem myszy.

Teraz możesz mieć wszystkie potrzebne nakładki ikon, dla stanu w różnych chmurach, dla wskazań repozytorium, jak dla narzędzi Tortoise i tak dalej.

narration_sd
źródło
2
Ideą nakładek jest to, że powinieneś być w stanie określić stan obserwowanego obiektu „na pierwszy rzut oka”. Twój plan, choć kreatywny, wymagałby „rąk na klawiaturze lub myszy” w celu udostępnienia informacji. Nie żebym miał lepsze rozwiązanie ...
rbellamy
Jeśli muszą znajdować się w wysuwanym oknie, dlaczego nie umieścić informacji na pasku informacji lub okienku podglądu lub w innym miejscu w interfejsie użytkownika? Istota ikon nakładek polega na tym, że są one nakładane i widoczne na pierwszy rzut oka.
Cody Gray