Основная идея программирования оболочки Windows заключается в том, что вы можете связать данный тип файла (расширение) с тем, что MS в настоящее время называет progid (например, Company.Type.Ver):
HKCR \ .txt @= Acme.Text.1
HKCR \ Acme.Text.1 @ = Это программа для ассоциаций текстовых файлов для Acme
И затем Acme Corp может поместить столько глаголов оболочки, сколько они захотяткак подразделы HKCR \ Acme.Text.1 \ shell, такие как HKCR \ Acme.Text.1 \ shell \ open.
Но если я XyzCorp, как мне добавить дополнительный глагол в текстовые файлы?
Я не хочу узурпировать основную ассоциацию файлов - я рад, что она ассоциирована с Acme.Text.1, но я хочу добавить «Импорт в Xyz Editor».
Я мог бы:
1. добавить глагол в progid Acme (например, HKCR \ Acme.Text.1 \ shell \ my-verb)
2. создать новый progid от нашего имени и скопировать данные Acme ви объединить глаголы XyzCorp в
3. добавить глаголы непосредственно к расширению файла (по крайней мере, один из них раньше)
4. ???
Кто-нибудь знает «правильный» ответ на этот вопрос?
РЕДАКТИРОВАТЬ: Я действительно не в восторге от любого решения, которое включает в себя необходимость изменить чужой PROGID.Я действительно предпочел бы добавить что-то - IContextMenu или что-то еще, кроме соответствующего PROGID для добавления дополнительных глаголов / опций к данному типу файла.
Кажется, что такая сумасшедшая система имеет ext->progid, если progid принадлежит отдельным разработчикам и может быть удален или изменен таким образом по желанию.Это кажется мне хрупким (удалить что-то и poof, расширение вашего файла перестает работать должным образом, или установить что-то и аналогично ваш вторичный глагол исчезает, потому что ext теперь сопоставлен с другим проприетарным PROGID, к которому я не добавлял наш глагол, когда мы былиустановлен (не, в то время, ничего не зная об этом другом пока еще не существующем progid)), и просто тупой.По прошествии всего этого времени все эти версии Windows и Microsoft так и не нашли способ иметь слои обработчиков для данного типа файлов?Действительно?!?
Я просто нахожу это изумление!Младшее программирование 101 включает в себя изучение шаблонов команд или других многоуровневых / каскадных систем.Сами Windows WinProcs организованы в виде шаблонов команд - так, что от внутреннего контекста окна до внешнего, многие возможные обработчики получают трещину в данном MSG.
Конечно, есть способ добавить глаголэто относится к нескольким расширениям без переопределения первичной ассоциации progid расширений, которая сама по себе полностью независима от первичного расширения-> progid mapping (так что пользователь может устанавливать несколько программ со временем и при этом иметь доступ к вторичному глаголу для этого файла).type).
Полагаю, я могу посмотреть на HKCR. * ... Я понимаю, что там можно добавлять глаголы, которые применяются ко всем типам файлов.Но тогда мне нужно найти какой-нибудь способ фильтрации, чтобы наш глагол действительно присутствовал только для тех типов файлов, к которым мы должны обратиться ...