Здравствуйте, NetMan_NetMan, Вы писали:
NN>Как получить названия иконок, через хэндл рабочего стола?
NN>например, "Мой компьютер","WinAMP" и т.д
Через Handle рабочего стола никак. Ну можно вообще-то найти дочернее окно с именем класса SysListView32 и перебрать все элементы, это будут иконки рабочего стола, но это какой-то не очень способ.
Вот IMHO более правильный
#include <windows.h>
#include <shlobj.h>
int _tmain(int argc, _TCHAR* argv[])
{
IShellFolder *pSF;
IEnumIDList *pIDListEnum;
IMalloc *pMalloc;
ULONG Retr;
CoInitialize(NULL);
SHGetDesktopFolder(&pSF);
pSF->EnumObjects(NULL, SHCONTF_NONFOLDERS | SHCONTF_FOLDERS, &pIDListEnum);
CoGetMalloc(1, &pMalloc);
LPITEMIDLIST pIDList = (LPITEMIDLIST) pMalloc->Alloc(MAX_PATH + 1);
pIDListEnum->Next(1, &pIDList, &Retr);
STRRET Str;
while (pIDList)
{
Str.uType = STRRET_WSTR;
pSF->GetDisplayNameOf(pIDList, SHGDN_INFOLDER, &Str);
//в Str.pOleStr или Str.cStr хранится строка с именем иконки
pIDListEnum->Next(1, &pIDList, &Retr);
}
pMalloc->Free(pIDList);
pSF->Release();
pIDListEnum->Release();
pMalloc->Release();
CoUninitialize();
return 0;
}
Надеюсь, ничего не забыл. А то уже 2 ночи

Обрати внимание на строку с комментарием, несмотря на флаг ф-ия фозвращает значения куда попало, не зависимо от выставления флага.
Для "My Computer", "Recycle Bin" и т.д. возвращает в pOleStr, для ярлыков и файлов почему-то в cStr.
... << RSDN@Home 1.0 beta 7a >>