Форум: "Система";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
ВнизВопрос тем, кто работал с Shell ом Найти похожие ветки
← →
tormoz (2002-01-16 20:25) [0]А вопрос такой: как можно сказать системе, чтобы она положила определённую икону в SystemImageList.
Общий задача такая: получить индекс иконы в SysImageList"е, соответствующей определённому расширению.
Сейчас я делаю так: ищу физическое расположение иконы по реестру, вытаскиваю её из файла и вручную (ImageList_AddIcon) добавляю в SysImageList, но знаю, что так делать нельзя, т.к. после нескольких десятков таких операций виндовоза начинает колбасить.
← →
Serghei (2002-01-17 14:46) [1]Не знаю, может поможет -
...
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;
Удачи
← →
tormoz (2002-01-17 19:02) [2]А что такое "
items
" в "s := items[Index];
"?
← →
tormoz (2002-01-17 19:29) [3]Н-да, как всегда ответ на большинство вопросов - RTFM внимательней.
Спасибо за наводку. Ключевой момент здесь:SHGFI_USEFILEATTRIBUTES
← →
Serghei (2002-01-18 09:33) [4]Итемс - это итемс! ;о) Итемы получены из ЛистБокса в котором загружены файлы!
Страницы: 1 вся ветка
Форум: "Система";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c