Ikony

0

Jak pobrac obraz ikony przypisanej w windzie do danego rozszerzenia??

0
Uses ShellApi;
{...}
Var SHI:_SHFILEINFO;
    Ikona:TIcon;
{...}
  SHGetFileInfo(PChar('nazwa pliku'),0,SHI,SizeOf(SHI),SHGFI_ICON OR SHGFI_SMALLICON);
  Ikona.Handle:=SHI.hIcon;
{...}
0

Hm... w tym tylko problem, ze ja nie mam pliku. Moge oczywiscie utworzyc plik jakikolwiek z interesujacym mnie rozszerzeniem, potem pobrac ikone i plik usunac. I tak w ostatecznosci zrobie. Ale moze jest jakis szybszy sposob na pobranie ikony do rozszerzenia a nie od jakiegos pliku??

0

Ja osobiście szukałbym w rejestrze... Gdzieś te wszystkie informacje są zapisane, ale klucza nie podam, bo sam nie wiem... Trzebaby poszukać.

0

Wydaje mi się, że na ten temat była wskazówka w FAQ, ale mogę się mylić
Podany kod podaje dokładną ścieżkę do ikony skojarzonej z rozszerzeniem

function TForm1.GetIconPath(ext: string): string;
var
Reg:TRegistry;
srch:string;
begin
Reg:=TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey(ext,False);
srch:=Reg.ReadString('');
Reg.CloseKey;
Reg.OpenKey(srch+'\DefaultIcon',False);
result:=Reg.ReadString('');
Reg.CloseKey;
Reg.Free;
end;

Rozszerenie podajemy z kropką na początek. Na przykład:

ShowMessage(GetIconPath('.hlp'));

Teraz załaduj plik ikony z zasobów. Liczba po przecinku definiuje numer zasobu.

0

To ja dorzuce coś jeszcze tytułem komentarza:

Każde rozszerzenie pliku zarejestrowane w systemie posiada swój własny klucz o nazwie .xxx gdzie xxx to rozszerzenie. Te wzystkie klucze znajdują się w kluczu HKEY_CLASSES_ROOT. W każdym z tych kluczy .xxx znajduje się wartość domyślna ,która jest jednocześnie nazwą drugiego klucza skojarzonego z tym rozszerzeniem(ten drugi klucz również znajduje się w HKEY_CLASSES_ROOT). Np klucz ".bat" zawiera wartość domyślną "batfile".Zatem istnieje drugi klucz "batfile" W tym drugim kluczu związanym z tym rozszerzeniem znajduje się min ścieżka do ikony związanej z tym roszerzeniem oraz zdefiniowane polecenia ,które pojawiają się po kliknięciu prawym klawiszem myszy na plik o danym rozszerzeniu.Tutaj można np zdefiniować co się stanie po dwukrotnym kliknięciu myszką na plik o danym rozszerzeniu.

Pozdrawiam

0

OK to juz jestem blisko, tylko ze to chyba nie sciazka do ikony? np. dla pliku bmp jest sciezka 'shimgvw.dll,1'? I co dalej??

0

OK to juz jestem blisko, tylko ze to chyba nie sciazka do ikony? np. dla pliku bmp jest sciezka 'shimgvw.dll,1'? I co dalej??

Użyj ExtractIcon zwraca ona uchwyt do ikony. (HICON) Po dalsze przykłady odsyłam do Helpa albo do wyszukiwarki :)

0

było gdzieś na torrym... nie trzeba było mieć pliku...

1 użytkowników online, w tym zalogowanych: 0, gości: 1