Почему размер Desktop PIDL равен нулю? - PullRequest
0 голосов
/ 06 августа 2020

У меня вопрос о Desktop PIDL.

Я получил Desktop PIDL, используя SHGetDesktopFolder и IPersistFolder2::GetCurFolder.

Но я проверяю это с помощью ILIsEmpty, возвращаю true.

Итак, я проверяю Desktop PIDL, и cbSize в PIDL равен нулю.

Почему размер Desktop PIDL равен нулю ??

1 Ответ

1 голос
/ 06 августа 2020

Если этот PIDL пуст, родительская папка - это рабочий стол.

Вы можете проверить, является ли его имя «Рабочий стол», используя GetDisplayNameOf.

IShellFolder *psfDesktop = NULL;
hr = SHGetDesktopFolder(&psfDesktop);
IPersistFolder2 *pf = NULL;
hr = psfDesktop->QueryInterface(__uuidof(IPersistFolder2), (void**)(&pf));
PIDLIST_ABSOLUTE pidl = NULL;
hr = pf->Initialize(pidl);
hr = pf->GetCurFolder(&pidl);
BOOL result = ILIsEmpty(pidl);
STRRET name;
psfDesktop->GetDisplayNameOf(pidl, SHGDN_NORMAL, &name);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...