У меня есть папка с оболочкой, которая является элементом панели управления. Я пытаюсь получить ITEMIDLIST за то же самое. У меня есть идентификатор оболочки Shell.IShellFolder :: ParseDisplayName для получения ITEMIDLIST для панели управления Item
Судя по документации
https://msdn.microsoft.com/en-us/library/windows/desktop/bb775090%28v=vs.85%29.aspx и
https://msdn.microsoft.com/en-us/LIBRary/ms909875.aspx, которые не соответствуют
и состояние, которое можно указать отображаемое имя :: {GUID} синтаксисом из рабочего стола папку, я попытался
::{CLSID for Control Panel}\::{CLSID for my Shell folder}.
Это, однако, не работает, поскольку я в конечном итоге с Control Панельный ITEMIDLIST. Как получить ITEMIDLIST в элемент панели управления?
С ответом, предложенным @Denis Anisimov, я все еще сталкиваюсь с проблемами с ParseDisplayName.
int WINAPI _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
{
HRESULT hres;
LPSHELLFOLDER cPanel;
LPSHELLFOLDER DesktopFolder;
LPITEMIDLIST cpItemPidl;
LPITEMIDLIST pidl;
SHGetDesktopFolder(&DesktopFolder);
SHGetKnownFolderIDList(FOLDERID_ControlPanelFolder, CSIDL_CONTROLS, NULL, &pidl);
hres = DesktopFolder->BindToObject(pidl, NULL, IID_IShellFolder, (void**)&cPanel);
LPWSTR SFOLDERGUID = L"::{025A5937-A6BE-4686-A844-36FE4BEC8B6D}";
hres = cPanel->ParseDisplayName(NULL, NULL, SFOLDERGUID, NULL, &cpItemPidl, NULL);
}
я HRES в
E_INVALIDARG One or more arguments are invalid.
попытался это, но ControlPanelFolder-> ParseDisplayName Безразлично» t, когда я передаю _T (:: GUID) в качестве отображаемого имени. – Peaked
И что такое HRESULT of ParseDisplayName? Будет лучше, если вы покажете свой код. –
hres is E_INVALIDARG Один или несколько аргументов недействительны. Пропускаю Отображаемое имя как: {GUID} – Peaked