Nie zamierzam sugerować rozwiązania w mojej odpowiedzi, ponieważ najlepszym, co możesz zrobić bez narzędzi innych firm, jest prawdopodobnie odpowiedź PIMP_JUICE_IT (chociaż ta odpowiedź to po prostu dodanie nowego czasownika uzupełniającego i nie ma to nic wspólnego z systemem Windows „Otwórz za pomocą” ”i należy je odpowiednio nazwać).
Spróbuję jednak wyjaśnić szczegóły techniczne tego, co się dzieje i dlaczego:
Podmenu „Otwórz za pomocą” jest zaimplementowane jako rozszerzenie powłoki IContextMenu i jest zarejestrowane pod HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
. Po kliknięciu prawym przyciskiem myszy jednego lub więcej elementów w folderze powłoki powłoka przegląda różne klucze poniżej, HKEY_CLASSES_ROOT
aby zbudować menu. Wpisy poniżej ...\shellex\ContextMenuHandlers
są dynamiczne i wykonują rzeczywisty kod komputerowy, który określa liczbę pozycji menu do dodania (jeśli istnieją).
Wygląda na to, że Microsoft zakodował rozszerzenie „Otwórz za pomocą”, aby dodać podmenu tylko po wybraniu jednego pliku, z jednym wyjątkiem; można wybrać wiele skrótów (.lnk), a nadal pojawi się podmenu (przynajmniej na moim komputerze z systemem Windows 8). Wyjdę na kończynę i powiem, że obsługa skrótu jest błędem.
Nie ma technicznego powodu, aby menu nie działało dla wielu plików, a tak naprawdę działało dobrze w systemie Windows XP:
Domyślam się, że głównym powodem, dla którego je usunęli; co robisz, gdy użytkownik wybiera pliki różnych typów? Jest to jednak precedens; możesz wybrać pliki różnych typów i nacisnąć klawisz Enter, aby otworzyć je wszystkie. Kiedy to zrobisz, powłoka po prostu używa akcji powiązanej z przedmiotem, który ma prostokąt skupienia.
Byłoby możliwe, aby zewnętrzny producent oprogramowania stworzył podobne menu, które działa dla wielu plików. Jedynym ograniczeniem jest to, że element „Wybierz inną aplikację” / „Wybierz program domyślny” u dołu menu prawdopodobnie musiałby zostać wyłączony, gdy istnieje wiele plików, ponieważ oficjalny sposób wywołania tego okna dialogowego obsługuje tylko jedną ścieżkę pliku. Aby wypełnić menu, wystarczy użyć SHAssocEnumHandlers do zbudowania listy aplikacji dostępnych dla określonego typu pliku.
Jest to tak wyjątkowy przypadek, że nikt nie poświęcił czasu na ponowne wdrożenie rozszerzenia „Otwórz za pomocą” tylko w celu obsługi wielu plików, nawet jeśli byłoby to technicznie możliwe…