Как в заголовке, там какой-либо API Win32, чтобы сделать это?
эта папка содержит ярлык пиннингового приложения
C:\Users\Your-User-Name\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
.Не делайте этого.
Я на 99% уверен, что для этого нет официального API, по той же самой причине, по которой не было программного доступа к старому пин-листу меню "Пуск" .
Короче говоря, большинству пользователей не нужны программы, помещающие мусор в их избранное, быстрый запуск, панель задач и т.д., так что Windows не поддерживает вас в этом качестве.
.Я обнаружил, что официального API для этого нет, но кто-то сделал это через VBScript. http://blog.ananthonline.net/?p=37 Спасибо.
В комментариях к статье Code Project говорится, что все, что вам нужно сделать, это создать символическую ссылку в папке «C: \ Users \ Username \ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ User Pinned \ TaskBar ".
Но, как отмечается в других комментариях, в целом это, по-видимому, нерациональная практика.
Вы можете подключать/отключать приложения с помощью глаголов Windows Shell:
http://blogs.technet.com/deploymentguys/archive/2009/04/08/pin-items-to-the-start-menu-or-windows-7-taskbar-via-script.aspx
Для API существует удобная для сценариев библиотека COM для работы с Shell:
http://msdn.microsoft.com/en-us/library/bb776890%28VS.85%29.aspx
Вот пример, написанный на JScript:
// Warning: untested and probably needs correction
var appFolder = "FOLDER CONTAINING THE APP/SHORTCUT";
var appToPin = "FILENAME OF APP/SHORTCUT";
var shell = new ActiveXObject("Shell.Application");
var folder = shell.NameSpace(appFolder);
var folderItem = folder.ParseName(appToPin);
var itemVerbs = folderItem.Verbs;
for(var i = 0; i < itemVerbs.Count; i++)
{
// You have to find the verb by name,
// so if you want to support multiple cultures,
// you have to match against the verb text for each culture.
if(itemVerbs[i].name.Replace(/&/, "") == "Pin to Start Menu")
{
itemVerbs[i].DoIt();
}
}