Как программно закрепить приложение на панели задач

#c# #desktop-application

#c# #рабочий стол-приложение

Вопрос:

Я попробовал этот код, он отлично работает для открепления приложения от панели задач в Windows 10, но он не работает для закрепления приложения на панели задач.

 public static void PinUnpinTaskbar(bool pin)
{
    string l_strFilePath = System.Reflection.Assembly.GetEntryAssembly().Location;
    if (!File.Exists(l_strFilePath)) throw new FileNotFoundException(l_strFilePath);
    int MAX_PATH = 255;
    var actionIndex = pin ? 5386 : 5387; // 5386 is the DLL index for"Pin to Tasamp;kbar", ref. http://www.win7dll.info/shell32_dll.html
                                         //uncomment the following line to pin to start instead
                                         //actionIndex = pin ? 51201 : 51394;
    StringBuilder szPinToStartLocalized = new StringBuilder(MAX_PATH);
    IntPtr hShell32 = LoadLibrary("Shell32.dll");
    LoadString(hShell32, (uint)actionIndex, szPinToStartLocalized, MAX_PATH);
    string localizedVerb = szPinToStartLocalized.ToString();

    string path = Path.GetDirectoryName(l_strFilePath);
    string fileName = Path.GetFileName(l_strFilePath);

    // create the shell application object
    dynamic shellApplication = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));
    dynamic directory = shellApplication.NameSpace(path);
    dynamic link = directory.ParseName(fileName);

    dynamic verbs = link.Verbs();
    for (int i = 0; i < verbs.Count(); i  )
    {
        dynamic verb = verbs.Item(i);
        if (verb.Name.Equals(localizedVerb))
        {
            verb.DoIt();
            return;
        }
    }
    return;
}
  

Ответ №1:

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

Обновление KB3093266 удаляет оболочку.Объект приложения ‘taskbarpin’ глагол

Обновление KB3093266 удаляет оболочку.Объект приложения ‘taskbarpin’ глагол для добавления элементов закрепления на панели задач

Скорее всего, оно нарушено одним из обновлений, заменяющих KB3093266

И это (Powershell, но та же библиотека): сбой привязки к панели задач в Windows 10