![]() |
|
|
#1
|
|||
|
|||
|
Как вытащить иконку из реестра?
Делаю так но не работает: Код:
function GetRegistryIconHandle(FileName: string): HICON;
var
R: TRegistry;
Alias, //псевдвним для расширения в реестре
IconPath: string; //путь для файла с иконкой
IconNum, //номер иконки в файле
QPos: Integer; //позиция запятой в записи реестра
begin
IconNum := 0;
R := TRegistry.Create;
try
R.RootKey := HKEY_CLASSES_ROOT;
if R.OpenKey('\' + ExtractFileExt(FileName), True) then
Alias := R.ReadString('');
R.CloseKey;
if R.OpenKey('\' + Alias + '\DefaultIcon', True) then
IconPath := R.ReadString('');
R.CloseKey;
QPos := Pos(',', IconPath);
if QPos <> 0 then
begin
IconNum := StrToInt(Copy(IconPath, QPos + 1, 4));
IconPath := Copy(IconPath, 1, QPos - 1)
end;
finally
R.Free;
end;
Result := ExtractIcon(hInstance, PChar(IconPath), IconNum);
end; |
|
#2
|
|||
|
|||
|
Не занимайся ерундой, тащи из шела:
Код:
procedure TMailMessageForm.FormCreate(Sender: TObject);
var
SHFI: TSHFileInfo;
begin
ilSysIcons.Handle := SHGetFileInfo(PChar(''), 0, SHFI , SizeOf(SHFI),
SHGFI_ICON or SHGFI_SMALLICON or SHGFI_SYSICONINDEX);
end;
function TMailMessageForm.GetSystemImageIndex(AFileName : String) : Integer;
var
SHFI : TSHFileInfo;
begin
Result := -1;
Try
SHGetFileInfo(PChar(AFileName),FILE_ATTRIBUTE_NORMAL,SHFI, sizeof(SHFI),
SHGFI_SYSICONINDEX Or SHGFI_USEFILEATTRIBUTES Or SHGFI_SMALLICON );
Result := SHFI.iIcon;
Except
End;
end; |
|
#3
|
|||
|
|||
|
Мне просто нужно получить иконку ассоциируемогой программы этого файла. Как осуществить?
|
|
#4
|
||||
|
||||
|
Тебе дали код.
|
|
#5
|
|||
|
|||
|
Вы не поняли, например если у меня аудиопроигрыватель по умолчанию AIMP, а значек у файла МР3 показывает Windows проигрывателя.
|
|
#6
|
||||
|
||||
|
удали AIMP, если Windows, то будет играть по умолчанию
|
|
#7
|
||||
|
||||
|
Цитата:
|