Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.04.2014, 20:42   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию Не те иконки

Подскажите как исправить, вот загружаю иконки файлов, но они отображаеются чуть не верно. То есть у меня например файл *.mp3 по умолчанию проигрывает AIMP, а иконка в программе стандартного Windows плеер, а не AIMP. Как исправить?
HTTqp вне форума Ответить с цитированием
Старый 28.04.2014, 20:54   #2
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от HTTqp Посмотреть сообщение
Подскажите как исправить, вот загружаю иконки файлов, но они отображаеются чуть не верно. То есть у меня например файл *.mp3 по умолчанию проигрывает AIMP, а иконка в программе стандартного Windows плеер, а не AIMP. Как исправить?
А нужно исправлять? Иконка и программа по умолчанию это две большие разницы.
northener вне форума Ответить с цитированием
Старый 28.04.2014, 21:13   #3
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Цитата:
Сообщение от northener Посмотреть сообщение
А нужно исправлять? Иконка и программа по умолчанию это две большие разницы.
Да нужно чтобы грузился тот значок который нужно.
я достаю иконки так:
Код:
SHGetFileInfo(PChar(aPath+SR.Name),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON or SHGFI_SMALLICON);
 icon.Handle:=FileInfo.hIcon;
HTTqp вне форума Ответить с цитированием
Старый 28.04.2014, 21:33   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Попробуй через реестр, если так не правильно.
по расширению файла, там данные о иконке хранятся
ZuBy вне форума Ответить с цитированием
Старый 28.04.2014, 22:07   #5
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Цитата:
Сообщение от ZuBy Посмотреть сообщение
Попробуй через реестр, если так не правильно.
по расширению файла, там данные о иконке хранятся
А примерчик можно?
HTTqp вне форума Ответить с цитированием
Старый 28.04.2014, 22:23   #6
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Я уже дал пример, осталось только написать код. Действуйте!
ZuBy вне форума Ответить с цитированием
Старый 28.04.2014, 22:42   #7
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Все тема закрыта, определение через реестр тоже самое дает что и мой способ, нашел проще и менее гемаройный)
HTTqp вне форума Ответить с цитированием
Старый 29.04.2014, 07:38   #8
Toxa
Форумчанин Подтвердите свой е-майл
 
Аватар для Toxa
 
Регистрация: 01.12.2006
Сообщений: 514
По умолчанию

не будь эгоистом, выложи свое решение тут, для тех у кого возникнет такая же проблема
Пишу на Delphi за еду
Toxa вне форума Ответить с цитированием
Старый 29.04.2014, 18:51   #9
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

У меня хорошо находит эта версия.
Код:
var
   FileInfo: SHFILEINFO;
   Pat_ :String; // Buf путь файла
begin
 Pat_ := 'C:\blablablabla.mp3';
    // Иконка файла
  SHGetFileInfo(PChar(Pat_), 0, FileInfo,
                    SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
end;
Еще использую и эту. Для другого.
Код:
function GetIcon(const FileName: string; const IconType: TIconType = itSmall):TIcon;
var
  FileInfo: TShFileInfo;
  ImageList: TImageList;
  IT: DWORD;
begin
  IT := SHGFI_SMALLICON;
  Result := TIcon.Create;
  ImageList := TImageList.Create(nil);
  if (IconType = itLarge) then
  begin
    IT := SHGFI_LARGEICON;
    ImageList.Height := 32;
    ImageList.Width := 32;
  end;
  FillChar(FileInfo, Sizeof(FileInfo), #0);
  ImageList.ShareImages := true;
  ImageList.Handle := SHGetFileInfo(
    PChar(FileName),
    SFGAO_SHARE,
    FileInfo,
    sizeof(FileInfo),
    IT or SHGFI_SYSICONINDEX
    );
  ImageList.GetIcon(FileInfo.iIcon, Result);
  ImageList.Free;
end;

Последний раз редактировалось Alter; 29.04.2014 в 18:53.
Alter вне форума Ответить с цитированием
Старый 29.04.2014, 23:16   #10
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

Цитата:
Сообщение от Toxa Посмотреть сообщение
не будь эгоистом, выложи свое решение тут, для тех у кого возникнет такая же проблема
Все элементарно, сначала определим к которой относится данный файл. А именно вот так:

Код:
function FindExec(FilePath:string):string;
var
buf:array[0..MAX_PATH] of Char;
begin
 Result := '';
  if FileExists(FilePath) then {Проверка на существование файла}
    if FindExecutable(PChar(FilePath),nil,@buf)<>0 then
     Result:=buf;
end;
А затем подставляем иконку этой программы уже)
Кто может подсказать как это реализованно в Total Commander? может кто знает)
HTTqp вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
иконки danzel1 Общие вопросы C/C++ 2 13.04.2011 20:35
Иконки Killbrum Свободное общение 9 18.08.2008 01:00
Иконки Патрон Общие вопросы Delphi 4 01.04.2008 14:07
иконки MAcK Общие вопросы Delphi 1 17.11.2006 15:56