Один значок на панели задач для всех Windows в многопроцессном приложении wpf (нажмите после развертывания)

У меня многопроцессное приложение wpf: 1 главный процесс + 1 или более подчиненных процессов. Все эти процессы имеют Windows.

Теперь я установил свойство значка всех окон на xyz.ico. Также я установил для свойства ApplicationIcon запускаемого проекта значение xyz.ico. Я развертываю приложение через щелчок один раз.

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

Есть идеи, что мне не хватает? Или любой другой метод для достижения этого сценария.

Примечание. Я НЕ запускаю другое приложение. Есть только одно приложение, которое запускает разные процессы.

ответ: наконец, мы разобрались с этим, используя API-интерфейсы appUserModelID shell32. Он работал даже с однократным нажатием кнопки.


person KhannaB7    schedule 28.05.2017    source источник
comment
Возможный дубликат Объединить два приложения в один значок на панели задач   -  person    schedule 28.05.2017
comment
@elgonzo проблема здесь в том, что все значки окон дочерних процессов объединены, за исключением окна основного процесса.   -  person KhannaB7    schedule 28.05.2017
comment
Да, именно поэтому именно это дубликат вопроса, который я связал...   -  person    schedule 28.05.2017
comment
@elgonzo я попробую подход, отмеченный как ответ в повторяющемся вопросе. Однако в нем говорится о вызове API после запуска процесса с помощью ссылки на окно, в моем случае у меня есть несколько окон, запускаемых в течение жизненного цикла приложения. В любом случае, я попробую это, спасибо.   -  person KhannaB7    schedule 28.05.2017
comment
Что ж, вам нужно только убедиться, что все процессы имеют один и тот же идентификатор приложения (также известный как идентификатор модели пользователя приложения). Все ваши подчиненные процессы уже имеют один и тот же идентификатор приложения (поскольку они сгруппированы на панели задач). Все, что вам нужно сделать, это дать вашему основному / главному процессу тот же идентификатор приложения, что и ваши подчиненные процессы. Если вы не знаете ApplicationID подчиненных устройств (что было бы в случае, если они не установлены явно), вы можете также попробовать установить их ApplicationID...   -  person    schedule 28.05.2017
comment
@elgonzo ДА, ты прав, обычно я должен просто установить идентификатор пользователя приложения для главного процесса. Однако согласно msdn.microsoft. com/en-us/library/windows/desktop/, так как я использую однократный щелчок для развертывания, я не должен явно устанавливать идентификаторы пользователей приложения. поэтому я думаю, кроется ли проблема в щелчке один раз.   -  person KhannaB7    schedule 28.05.2017
comment
См. здесь некоторую информацию, которая может помочь вам определить ApplicationID в сценариях ClickOnce: msdn.microsoft.com/en-us/library/windows/desktop/   -  person    schedule 28.05.2017
comment
Я только что убрал свой флаг дублирования, так как для ClickOnce вам действительно нужно следовать другому подходу, чтобы установить идентификаторы приложений, как кажется...   -  person    schedule 28.05.2017
comment
Спасибо, elgonza, я обновлю, если взломаю это.   -  person KhannaB7    schedule 28.05.2017