2009-02-24 13 views
5

Czy mogę wpłynąć na proces?
Mam aplikację zbudowaną w .NET 3.5/VS2008. Mam wbudowane wiele ikon w aplikację z plikiem .res32 win32. Odbywa się to w oknie Właściwości projektu w VS2008 - zamiast określać plik .ico, zaznacz to pole, aby określić plik .res. W pliku .res możesz mieć wiele ikon. Zobacz here o co mi chodzi.W jaki sposób Vista generuje ikonę dokumentów powiązanych z moją aplikacją?

Każda ikona zawiera obraz "Vista" o wielkości 256x256xRGB (PNG Cmopressed), obraz o rozdzielczości 256x256x32bit oraz zwykłą kaskadę 48x48, 32x32 i 16x16 obrazów w różnych kombinacjach kolorystycznych. Jeśli wyświetlam wynikowy plik exe w Eksploratorze, widzę duże piękne obrazy w rozdzielczości 256x256.

Mogę następnie powiązać rozszerzenie pliku z moją aplikacją, klikając prawym przyciskiem myszy "Otwórz za pomocą ..."> Ustaw domyślny clickstream programu w Eksploratorze Windows Vista. Ale ikona wyświetlana obok dokumentu to niewielka wersja ikony aplikacji, nałożona na coś, co wygląda jak biała kartka ze złożonym rogiem.

Powoduje to, że oryginalny obraz jest mały, aby był widoczny, kiedy jest wyświetlany w wersji "małej ikonki". Wygląda okropnie.

Wiem, że możliwe jest całkowite pominięcie złożonego kawałka papieru lub przynajmniej uzyskanie nałożonego na niego większego obrazu. Ikona pliku C# ma na przykład złożoną kartkę papieru, ale emblemat C# jest duży i widoczny. Jak mogę to zdobyć? Ikona pliku .zip po zainstalowaniu programu WinZip 12 jest duża i widoczna i nie ma złożonego arkusza papieru.

Czy ikona dokumentu jest inna niż ikona aplikacji? Czy jest coś w mojej aplikacji, którą muszę zrobić, aby zarejestrować ikonę, której Vista użyje dla dokumentów powiązanych z moją aplikacją?

Odpowiedz

13

Ikony i powiązania plików dla rozszerzeń plików są wymienione w rejestrze. Dokładniej, wpisy o typie treści, postrzeganym typie i wartości (Default) są rzeczywistymi skojarzeniami. Na przykład pliki .cs mają domyślną wartość VisualStudio.cs.9.0 (mam VS 2008). Możesz sprawdzić HKEY_CLASSES_ROOT\VisualStudio.cs.9.0, aby zobaczyć rzeczywistą ikonę, program i polecenia powiązane z tym typem pliku. W szczególności, HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon to pozycja informująca Eksploratora, która ikona ma wyświetlać pliki tego typu. Wskazuje binarny i identyfikator zasobu w tym pliku binarnym.

Gdy powiążesz typ pliku z programem prawym przyciskiem myszy -> Otwórz za pomocą ..., nie określisz domyślnej ikony, więc Explorer bierze ikonę twojej aplikacji i nakłada ją na ogólną ikonę dokumentu .

Właściwe podejście polegałoby na włączeniu w ramach konfiguracji odpowiednich wpisów rejestru w celu powiązania typu pliku z aplikacją i ikoną. Dokładne wartości rejestru, które należy uwzględnić, zależą od poleceń, które chcesz dodać do menu kontekstowego dla tego typu pliku, ale przynajmniej chcesz użyć polecenia Otwórz. W przypadku plików .cs można zauważyć, że istnieje wpis HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open z wartością (Default) zawierającą aplikację, która ma zostać uruchomiona po wywołaniu polecenia Otwórz. (Można zignorować ddeexec część na razie)

Pamiętaj, że HKEY_CLASSES_ROOT jest odwzorowany widok dwóch gałęzi rejestru: HKEY_CURRENT_USER\Software\Classes i HKEY_LOCAL_MACHINE\Software\Classes. Jeśli chcesz, aby twoje powiązanie plików było dla wszystkich użytkowników, musisz napisać do HKEY_LOCAL_MACHINE. Aby to zrobić, twoja konfiguracja musi działać jako administrator. W przeciwnym razie próba zapisu na numer HKEY_CLASSES_ROOT zakończy się niepowodzeniem z odmową dostępu lub zapisem do HKEY_CURRENT_USER, a połączenie zostanie wykonane tylko dla bieżącego użytkownika.(Które z tych dwóch zdarzeń będzie miało miejsce, zależy od kilku czynników, takich jak system operacyjny, czy użytkownik jest administratorem, ale nie ma podwyższonej pozycji itd.). W szczególności File Types i Registering Programs with Client Programs dadzą ci podstawy, jak to zrobić.

+0

WOW! Świetna odpowiedź. Idealny! Właśnie tego szukałem! – Cheeso

Powiązane problemy