Я не збираюся пропонувати рішення у своїй відповіді, оскільки найкраще, що можна зробити без сторонніх інструментів - це, мабуть , відповідь PIMP_JUICE_IT (хоча ця відповідь - просто додавання нового додаткового дієслова, і це не має нічого спільного з Windows "Відкрити "функціональність і повинна бути названа відповідно).
Однак я спробую пояснити технічні деталі того, що відбувається і чому:
Підменю "Відкрити за допомогою" реалізовано як розширення оболонки IContextMenu і зареєстровано під HKEY_CLASSES_ROOT\*\shellex\ContextMenuHandlers
. Коли ви клацніть правою кнопкою миші на одному або декількох елементах у папці оболонки, оболонка розглядає різні клавіші внизу, HKEY_CLASSES_ROOT
щоб створити меню. Записи під ...\shellex\ContextMenuHandlers
динамічними та виконують фактичний комп'ютерний код, який визначає кількість пунктів меню, які потрібно додати (якщо такі є).
Схоже, Microsoft зашифрувала розширення "Відкрити з", щоб додати підменю лише тоді, коли ви вибрали один файл, за одним винятком; можна вибрати кілька ярликів (.lnk), і ви все одно отримаєте підменю (принаймні на моїй машині Windows 8). Я вийду на кінцівку і скажу, що обробка ярлика - помилка.
Немає жодних технічних причин, чому меню не могло працювати для декількох файлів, а насправді воно працювало чудово у Windows XP:
Я здогадуюсь, головна причина, по якій вони її усунули; що ви робите, коли користувач вибирає файли різних типів? Однак для цього вже є прецедент; ви можете вибрати файли різних типів і натиснути клавішу Enter, щоб відкрити їх усі. Коли ви робите це, оболонка просто використовує дію, пов'язану з елементом, який має прямокутник фокусування.
Сторонній постачальник програмного забезпечення міг би створити подібне меню, яке працює для декількох файлів. Єдине обмеження полягає в тому, що пункт "Вибрати іншу програму" / "Вибрати програму за замовчуванням" внизу меню, ймовірно, повинен бути відключений, коли є кілька файлів, оскільки офіційний спосіб викликати це діалогове вікно підтримує лише один шлях до файлу. Для заповнення меню просто використовуйте SHAssocEnumHandlers для створення списку програм, доступних для вказаного типу файлу.
Це такий крайній випадок, що ніхто не витратив час на повторну реалізацію розширення "Відкрити з" просто для підтримки декількох файлів, хоча технічно це було б можливо ...