IStartMenuPinnedList::RemoveFromList 方法 (shobjidl.h)

Windows Vista:从 “开始 ”菜单固定列表中删除项,该列表是“ 开始” 菜单左上角的列表。

Windows 7:从 “开始 ”菜单固定列表中删除某个项,并从任务栏中取消固定该项目。

Windows 8:取消固定任务栏中的项目,但不从“开始”屏幕中删除该项目。 无法以编程方式从“开始”菜单中删除项;它们只能由用户取消固定,或作为程序卸载的一部分删除。

语法

HRESULT RemoveFromList(
  [in] IShellItem *pitem
);

参数

[in] pitem

类型: IShellItem*

指向 IShellItem 对象的指针,该对象表示要取消固定的项。

返回值

类型: HRESULT

  • 如果已从固定项列表和/或任务栏成功删除项,则返回S_OK。
  • 如果项根本没有固定,则返回S_OK。
  • 否则返回标准错误代码。

注解

由于应用程序无法知道其安装的任何快捷方式是否已固定,因此应在从系统中删除的任何应用程序快捷方式上调用此方法。 这包括在安装期间放置在桌面上的快捷方式,以及添加到 “开始” 菜单 的“所有程序” 列表的快捷方式。

建议所有应用程序在卸载过程中使用此方法清理其固定项。 不需要取消固定应用程序快捷方式,但出于可靠性考虑,强烈建议取消固定应用程序快捷方式。

此方法不会删除 pitem 表示的原始快捷方式。 它会从 “开始 ”菜单和/或任务栏中删除固定的表示形式。 通过此方法删除项 (取消固定) 后,应用程序可以删除原始快捷方式。

如果某个项固定到 “开始” 菜单和任务栏,则对此方法的一次调用会将其从两个位置删除。

注意 如果应用程序使用 Windows Installer (MSI) 框架来执行卸载,则无需显式调用此方法;MSI 将调用 以取消固定快捷方式。
 

示例

此示例演示如何使用 IStartMenuPinnedList::RemoveFromList


HRESULT hr = CoInitializeEx(NULL,COINIT_APARTMENTTHREADED);

if (SUCCEEDED(hr))
{
    IShellItem *pitem;
    hr = SHCreateItemFromParsingName(TEXT("Path to the shortcut"), 
                                     NULL, 
                                     IID_PPV_ARGS(&pitem));     

    //
    // Do setup work here to remove the link, including the unpinning
    // of the item.
    //
        
    if (SUCCEEDED(hr))
    {
        IStartMenuPinnedList *pStartMenuPinnedList;
        
        hr = CoCreateInstance(CLSID_StartMenuPin, 
                              NULL, 
                              CLSCTX_INPROC_SERVER, 
                              IID_PPV_ARGS(&pStartMenuPinnedList));
        
        if (SUCCEEDED(hr))
        {
            hr = pStartMenuPinnedList->RemoveFromList(pitem);
            pStartMenuPinnedList->Release();
        }
        
        pitem->Release();
    }
}

CoUnitialize();

要求

   
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 shobjidl.h
DLL Shell32.dll