windows - Hvordan genererer Vista ikonet for dokumenter i forbindelse med min ansøgning?

Indlæg af Hanne Mølgaard Plasc

Problem



Kan jeg påvirke processen?

Jeg har en applikation indbygget. NET 3.5/VS2008. Jeg har indlejret flere ikoner i appen med en win32 .res-fil. Dette gøres i feltet Egenskaber til projektet i VS2008 - i stedet for at angive en .ico-fil, skal du kryds i feltet for at angive en .res-fil. I .res filen kan du have flere ikoner. Se her for hvad jeg mener. [15]


Hvert ikon indeholder et 256x256xRGB (PNG Cmopressed) 'Vista grade' billede, et 256x256x32bit billede og den sædvanlige kaskade af 48x48, 32x32 og 16x16 billeder i forskellige farvekombinationer.
Hvis jeg ser den resulterende exe i Explorer, ser jeg de store smukke 256x256 Vista-billeder.


Jeg kan derefter knytte en filudvidelse til min app ved at bruge højre klik> 'Åbn med ...'> Indstil standardprogrammer clickstream i Vista s Explorer. Men ikonet ud for dokumentet er så en lille version af appen ikon, overlejret oven på, hvad der ligner et hvidt ark papir med et foldet hjørne.


Resultatet er, at det originale billede er lille til at være synligt, når det vises i 'lille ikon' -version. Det ser forfærdeligt ud.


Jeg ved, at det er muligt at udelade det foldede stykke papir helt eller i det mindste for at få et meget større billede overlejret på det. Ikonet for en C # -fil har for eksempel et foldet ark papir, men C # -mærket er stort og synligt. Hvordan kan jeg få det her? Ikonet for .zip-filer, når WinZip 12 er installeret, er stort og synligt og har ikke foldet ark papir.


Er ikonet for dokumenter anderledes end ikonet for applikationen? Er der noget i min app, som jeg skal gøre for at registrere et ikon, som Vista vil bruge til dokumenter tilknyttet min app?

Bedste reference


Ikonerne og filforeningerne for filudvidelser er angivet i registreringsdatabasen. Mere specifikt indeholder HKEY\_CLASSES\_ROOT.ext poster indholdstypen, opfattet type, og i værdien (Default) er den egentlige forening. For eksempel har .cs-filer standardværdien af ​​VisualStudio.cs.9.0 (jeg har VS 2008). Du kan tjekke HKEY\_CLASSES\_ROOTVisualStudio.cs.9.0 for at se det egentlige ikon, program og kommandoer, der er knyttet til denne filtype. , HKEY\_CLASSES\_ROOTVisualStudio.cs.9.0DefaultIcon er den post, der fortæller Explorer, hvilket ikon der skal vises for filer af denne type. Det peger på et binært og et ressource-id i det binære.


Når du knytter en filtype til et program ved at højreklikke på -> Åbn med ..., angiver du ikke et standardikon, så Explorer tager ikonet for din app og overlejrer det over et generisk dokumentikon.


Den rigtige tilgang ville være at medtage de relevante registreringsdatabaser som en del af din opsætning for at tilknytte filtypen med din ansøgning og dit ikon. De nøjagtige registreringsværdier, du skal medtage, afhænger af de kommandoer, du vil have tilføjet til kontekstmenuen for den pågældende filtype, men i det mindste vil du have kommandoen Åbn. I tilfælde af .cs-filer kan du se, at der er en post HKEY\_CLASSES\_ROOTVisualStudio.cs.9.0ShellCommandsOpen med (Default) værdi, der indeholder programmet, der skal startes, når kommandoen Åbn er påkaldt. (Du kan ignorere ddeexec delen for nu)


Husk at HKEY\_CLASSES\_ROOT er et kortfattet billede af to registreringsdatabaser: HKEY\_CURRENT\_USERSoftwareClasses og HKEY\_LOCAL\_MACHINESoftwareClasses. Hvis du vil have din filforening til alle brugere, skal du skrive til HKEY\_LOCAL\_MACHINE. Dit setup skal køre som administrator for at gøre det. Ellers forsøger man at skrive til HKEY\_CLASSES\_ROOT enten med adgang nægtet eller skrive til HKEY\_CURRENT\_USER og gøre foreningen kun for den nuværende bruger. (Hvilke af de to præcis vil ske afhænger af flere ting, ligesom hvad operativsystemet er, om brugeren er admin men ikke forhøjet osv.)


Du kan læse om alt dette i sektionen Tilpasning af filtyper (File Association) på MSDN. Specielt vil filtyper og registreringsprogrammer med klientprogrammer give dig det grundlæggende ved, hvordan du skal gøre det. [16] [17] [18]