Закрепить файл * .lnk на панели задач Windows 7 с помощью C #

Даже программное закрепление значки в Windows 7 кажутся недопустимыми (как здесь сказано: http://msdn.microsoft.com/en-us/library/dd378460 (v = VS.85) .aspx ), есть некоторые методы для этого с помощью сценариев VB. Кто-то нашел способ сделать это в C # следующим образом:

private static void PinUnpinTaskBar(string filePath, bool pin)
{
     if (!File.Exists(filePath)) throw new FileNotFoundException(filePath);

     // create the shell application object
     dynamic shellApplication = Activator.CreateInstance(Type.GetTypeFromProgID("Shell.Application"));

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

     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);
            string verbName = verb.Name.Replace(@"&", string.Empty).ToLower();

            if ((pin && verbName.Equals("pin to taskbar")) || (!pin && verbName.Equals("unpin from taskbar")))
            {

                verb.DoIt();
            }
        }

        shellApplication = null;
}

Как видно, в коде используются возможности .NET Framework 4.0. Я хочу задать вопрос: можно ли преобразовать эту функцию так, чтобы она делала то же самое, но с использованием только 3.5 Framework? Есть идеи?

11
задан kiamlaluno 6 August 2012 в 19:39
поделиться