Поделиться через


Метод 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 (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
Header shobjidl.h
DLL Shell32.dll