Настроить задачи панели задач по умолчанию в панели задач Windows 7 «список переходов»

У меня есть программа A.exe, которая загружает другой процесс B.exe, передавая динамические аргументы командной строки B.exe. Список задач на панели задач Windows 7 по умолчанию предоставит возможность запуска другого экземпляра B.exe в качестве его верхней опции. Например: http://cl.ly/image/2C1X2g1A2K0k верхний вариант откроет другой экземпляр командной строки.

Я хочу настроить этот список задач по умолчанию - через API Win32/Shell, так что верхний вариант фактически открывает A.exe вместо B.exe. Это возможно? Это также происходит, когда приложение «закреплено»; нажатая кнопка должна указывать на и загружать A.exe. Поскольку B.exe нуждается в динамических параметрах командной строки, которые определяются A.exe, это требование. B.exe не знает о A.exe.

Если это невозможно, есть ли другое обходное решение (например, ссылки на оболочку, ярлыки и т. Д.), Которые можно использовать для получения этой функции? Или есть просто способ полностью отключить этот список задач?

Заранее спасибо. Если этот вопрос непонятен, сообщите мне, и я обновлю описание.

0
nl ja de
Для закрепления вы можете использовать свойство System.AppUserModel.RelaunchCommand. Пример программы здесь .
добавлено автор Raymond Chen, источник

1 ответы

Хорошим решением этой проблемы было использование файла ярлыка (.lnk) в сочетании с флагом STARTF_TITLEISLINKNAME как объяснено на странице MSDN . Windows будет использовать ярлык в качестве элемента задачи на панели задач для запуска новых экземпляров приложения (верхняя запись в списке задач), а также при приложении приложения к панели задач.

Например, если B.lnk указывает на B.exe, мы можем поместить его в A.exe:

PROCESS_INFORMATION piProcInfo;
ZeroMemory(&piProcInfo, sizeof(PROCESS_INFORMATION));

STARTUPINFO siStartInfo;
ZeroMemory(&siStartInfo, sizeof(STARTUPINFO));
siStartInfo.cb = sizeof(STARTUPINFO);
siStartInfo.lpTitle = (LPTSTR)L"C:\Path\to\B.lnk";
siStartInfo.dwFlags = STARTF_TITLEISLINKNAME;

CreateProcess(NULL,
              (LPTSTR)L"C:\Path\to\B.exe",
              NULL,
              NULL,
              TRUE,
              CREATE_NO_WINDOW,
              NULL,
              NULL,
              &siStartInfo,
              &piProcInfo);

Надеюсь, что это поможет кому-то с аналогичным вариантом использования в нише.

0
добавлено
Про Windows
Про Windows
941 участник(ов)

Microsoft Windows и всё, что с этим связано. Список интересных групп и каналов: https://github.com/goq/telegram-list

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot