如何以编程方式将显示跳转列表的项目固定到WIN 7中的开始菜单

时间:2014-08-25 19:01:21

标签: windows-7 startmenu jump-list

我想在开始菜单中添加一个项目,以显示用户可以启动的应用程序列表。有点像自定义菜单。我得到了WIN API代码包,并了解我可以使用弹出菜单部分的跳转列表。不知道我怎么能把东西钉在开始菜单上。我正在寻找IE显示的内容。

1 个答案:

答案 0 :(得分:0)

能够使用Shell32库完成此任务。

public static class VerbNames{
    public static string PinToStartMenu = "Pin to Start Men&u";
    public static string UnpinFromStartMenu = "Unpin from Start Men&u";

    public static string PinToTaskbar = "Pin to Tas&kbar";
    public static string UnpinFromTaskbar = "Unpin from Tas&kbar";
}

public static class DesktopUtil {
    public static void PinItemToStartMenu(string itemPath, string itemName) {
        DoItemVerb(itemPath, itemName, VerbNames.PinToStartMenu);
    }

    public static void UnpinItemFromStartMenu(string itemPath, string itemName) {
        DoItemVerb(itemPath, itemName, VerbNames.UnpinFromStartMenu);
    }

    public static void PinItemToTaskbar(string itemPath, string itemName) {
        DoItemVerb(itemPath, itemName, VerbNames.PinToTaskbar);
    }

    public static void UnpinItemFromTaskbar(string itemPath, string itemName) {
        DoItemVerb(itemPath, itemName, VerbNames.UnpinFromTaskbar);
    }

    private static void DoItemVerb(string itemPath, string itemName, string verb) {
        Shell32.Shell shell = new Shell32.Shell();

        Shell32.Folder folder = shell.NameSpace(itemPath);

        Shell32.FolderItem item = folder.ParseName(itemName);

        DoItemVerb(item, verb);
    }

    private static void DoItemVerb(Shell32.FolderItem item, string verbToDo) {
        Shell32.FolderItemVerbs verbs = item.Verbs();

        foreach (Shell32.FolderItemVerb verb in verbs) {
            if (verb.Name.Equals(verbToDo)) {
                verb.DoIt();
            }
        }
    }
}