Здравствуйте, Коваленко Дмитрий, Вы писали:
КД>Посмотри IShellView::GetItemObject
В принципе смотрел уже:
Получил объект IDataObject вызывая IShellView::GetItemObject с параметром SVGIO_SELECTION
Все красиво, прямо прелестно

но тут столкнулся с проблемой другого плана :
хотел извлечь из IDataObject все пидлы...получил список в формате CFSTR_SHELLIDLIST
А вот тут собсно и проблема :
Эту всю радость надо наваять в Delphi ....

и макрос
#define GetPIDLItem(pida, i) (LPCITEMIDLIST)(((LPBYTE)pida)+(pida)->aoffset[i+1])
тупо не могу перевести на Pascal

(
ужастно стыдно, но не могу....
если можешь помоги, плиз
делаю все так
if Succeeded(FShellView.GetItemObject(SVGIO_SELECTION,IID_IDataObject,pData)) then
begin
FillChar(fmt,sizeof(fmt),0);
fmt.cfFormat := RegisterClipboardFormat(CFSTR_SHELLIDLIST);
fmt.ptd := 0;
fmt.dwAspect := DVASPECT_CONTENT;
fmt.lindex := -1;
fmt.tymed := TYMED_HGLOBAL;
if Succeeded(IDataObject(pData).GetData(fmt,data)) then
begin
list := GlobalLock(data.hGlobal);
// Вот эта строчка и не катит

pidl := PItemIDList(pointer(cardinal(@list)+list.aoffset[0]));
end;
end;