Wyodrębnianie ikonki z programu (z rozszerzenia)

0

Witam, mam maly problem, nie z samym wyopdrebnianiem, lecz zapisaniem wynikow...

Pisze prosty program do katalogowania zawartosci dyskow CD itp.
Wylistowane pliki sa pokazywane w komponenecie TListView wraz z ikonkami pobranymi za pomoca funkcji SHGetFileInfo(), ktora zwraca informacje o pliku wraz z ikonka. Problem polega na tym, ze funkcja wymaga podania sciezki do pliku, z ktorego chcemy wyodrebnic ikonke. Wiadomo, ze jesli kataloguje dyski CD, to nie bede kazal uzytkownikowi 'prosze wlozyc dysk CD nr 35 zeby progam mogl odczytac ikonke'...

Zapisywac ikonki wraz z info pliku do bazy tez mija sie z celem. Ikonka moze sie zmieniac wraz z nowymi wersjami programow zainstalowanych w systemie.

Myslalem, zeby sprawdzic w rejestrze aplikacje powiazane z danym rozszerzeniem pliku i włala.
Czy to jedyne wyjscie i czy dobrze mysle?

0

Użyj VirtualTreeView. Jest bardzo funkcjonalne i na pewno uda CI się go wykorzystać do swoich zastosowań (wiem bo sam kiedyś napisałem program do katalogowania oparty właśnie na VTV).

0

Mozesz mi napisac, w czym mi pomoze ten komponent, oprocz prezentacji danych?

0

A sprawdziłeś najpierw ten komponent? Bo skoro ktoś Ci napisał podpowiedź, to powinieneś sprawdzić co to jest... Poza genialną prezentacją danych VTV posiada bardzo elastyczny (zależny całkowicie od użytkownika) system przechowywania danych. Trzeba TYLKO wejść na odpowiednią stronę w Internecie i TROCHĘ poczytać.

[EDIT] Dzięki temu będziesz mógł przechowywać w łatwy sposób chociażby ikony plików wykonywalnych. (Które nie zmienią się z nową wersją bo ciężko uaktualnić coś na płycie. :P)

0

Nie chcialbym przerabiac teraz calego programu. Jestem na etapie dosc zaawansowanego konca :)
Sa jakies inne rozwiazania?

Problem rozwiazany.
Rozwiazanie zawarte jest na stronie http://www.awitness.org/delphi_pascal_tutorial/index.html - "Using the API to extract and then display icons".

0

stwórz pusty plik o potrzebnym rozszerzeniu np w katalogu Temp.
Pobierz z niego ikonę i dodaj do listy, następnie usuń plik z Temp
Będziesz miał takie same ikony jakie masz w systemie dla kazdego rodzaju pliku.

0
markac napisał(a)

Zapisywac ikonki wraz z info pliku do bazy tez mija sie z celem. Ikonka moze sie zmieniac wraz z nowymi wersjami programow zainstalowanych w systemie.

Myslalem, zeby sprawdzic w rejestrze aplikacje powiazane z danym rozszerzeniem pliku i włala.
Czy to jedyne wyjscie i czy dobrze mysle?

   SHGetFileInfo('.zip', FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(sfi), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON);

Co do exe to trzeba gromadzić w bazie, bo każdy exe ma inne rozszerzenie.

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