Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос тем, кто работал с Shell ом


tormoz ©   (2002-01-16 20:25:00) 

А вопрос такой: как можно сказать системе, чтобы она положила определённую икону в SystemImageList.

Общий задача такая: получить индекс иконы в SysImageList"е, соответствующей определённому расширению.

Сейчас я делаю так: ищу физическое расположение иконы по реестру, вытаскиваю её из файла и вручную (ImageList_AddIcon) добавляю в SysImageList, но знаю, что так делать нельзя, т.к. после нескольких десятков таких операций виндовоза начинает колбасить.


Serghei   (2002-01-18 09:33:00) [1]

Итемс - это итемс! ;о) Итемы получены из ЛистБокса в котором загружены файлы!


tormoz   (2002-01-17 19:29:00) [2]

Н-да, как всегда ответ на большинство вопросов - RTFM внимательней.

Спасибо за наводку. Ключевой момент здесь: SHGFI_USEFILEATTRIBUTES


tormoz   (2002-01-17 19:02:00) [3]

А что такое " items" в " s := items[Index];"?


Serghei   (2002-01-17 14:46:00) [4]

Не знаю, может поможет -
...
uses ...shellapi,...;
...
function GetImageList(Option: integer): TImageList;
var
SHFileInfo: TSHFileInfo;
begin
Result := TImageList.Create(Self);
with Result do
begin
ShareImages := true;
Handle := ShGetFileInfo("*.*", 0, SHFileInfo, SizeOf(TSHFileInfo),
Option or SHGFI_ATTRIBUTES or SHGFI_SYSICONINDEX)
end
end;

// Опшн - SHGFI_SMALLICON или SHGFI_LARGEICON

function GetImageIndex(Index: Integer): Integer;
var
SHFileInfo: TSHFileInfo;
Flags: Integer;
s: string;
begin
Flags :=
SHGFI_USEFILEATTRIBUTES or
SHGFI_SYSICONINDEX or
SHGFI_EXETYPE;


Flags := Flags or SHGFI_SMALLICON;

if Index > -1 then
begin
s := items[Index];
ShGetFileInfo(PCHAR(s),
0,
SHFileInfo,
SizeOf(TSHFileInfo),
Flags);

Result := SHFileInfo.iIcon;

end else
Result := Index;
end;

Удачи


Наверх

Титульная страница Поиск, карта сайта Написать письмо