У меня есть простое консольное приложение, написанное на C ++, которое действует как заглушка для запуска другого приложения через его список переходов.Цель состоит в том, чтобы добавить возможности списка переходов в приложения, которые не поддерживают это.Назовите это stub.exe.При запуске stub.exe он создает настраиваемый список переходов, используя следующие шаги (взятые правильно из примеров MS):
create an ICustomDestinationList
ICustomDestinationList::BeginList()
create an IObjectCollection
for_each item_to_add
create an IShellLink, set its path/arguments/title/icon
add IShellLink to the IObjectCollection
get the IObjectArray interface from the IObjectCollection
call ICustomDestinationList::AddUserTasks( IObjectArray interface )
ICustomDestinationList::CommitList()
При закреплении stub.exe на панели задач и щелчке правой кнопкой мыши на нем появляется Jumpilst, и онсодержит все добавленные IShellLinks.При нажатии на элемент он запускает соответствующий процесс.
Теперь я хотел бы, чтобы процесс, запущенный через этот список переходов, имел свои окна, сгруппированные под значком панели задач stub.exe, вместо того, чтобы иметь свою собственную группу.Похоже, ключом к этой работе является AppUsermodelID.Это то, что я пробовал до сих пор:
- только для тестирования, создайте пару ярлыков и установите идентификатор через IPropertyStore-> SetValue (PKEY_AppUserModel_ID, «id»).Действительно, при запуске этих ярлыков все они будут группироваться под одним значком на панели задач.
- , поскольку ярлыки делают то, что я хочу, я попытался добавить ярлыки в список переходов stub.exe: безрезультатно.Ярлыки даже не отображаются в списке переходов (может быть, у него нет ярлыка для ярлыка?), Но все методы возвращают S_OK
- , устанавливая PKEY_AppUserModel_ID для каждого из IShellLink, которые добавляются в список переходов:без эффекта
- вызов ICustomDestinationList-> SetAppID (): без эффекта
- вместо использования подзадач, пробовал с SHAddToRecentDocs: без эффекта.Список последних документов не отображается.Но сейчас все становится грязно.После установки AppUserModelID для ярлыка, который отвечает за закрепленный элемент панели задач (тот, что находится в% APPDATA% / Роуминг / Microsoft / Internet Explorer / Быстрый запуск / Пользователь закреплен / TaskBar), список переходов изменился: он не отображает «Задачи»'item больше, но показывает' Recent 'и элементы, которые я добавил с помощью SHAddToRecentDocs.Теперь, нажимая на них, я получаю диалоговое окно с заголовком, который начинается с «d: \ desktop», за которым следуют китайские иероглифы.При наведении курсора на элементы списка переходов вместо заданного мною описания также отображаются китайские иероглифы.
Вопросы:
- Что с китайскими символами в списке переходов?
- Почему установка идентификатора приложения на панели задач позволяет переключаться между разделами «Задачи» и «Последние», почему их там нет?
- Каким образом, если вообще возможно, добиться того, чтона самом деле хотите: пользовательский список переходов, из которого запускаемые элементы будут группироваться под значком на панели задач?(обратите внимание, что процессам, которые я планирую запустить, в настоящее время не установлен идентификатор приложения)