Как программно закрепить приложение на панели задач - PullRequest
0 голосов
/ 24 апреля 2019

Я пробовал этот код, он отлично работает для открепления приложения от панели задач в 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 Tas&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 Ответ

0 голосов
/ 25 апреля 2019

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

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

Обновление KB3093266 удаляет глагол объекта Shell.Application 'taskbarpin'для добавления выводов элементов на панели задач

Скорее всего, оно сломано одним из обновлений, которые заменяет KB3093266

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

...