Domanda

Posso influenzare il processo?
Ho un'applicazione costruita nel .NET 3.5 / VS2008. Ho incorporato più icone in app con un file .res win32. Questo viene fatto nella finestra delle proprietà per il progetto in VS2008 - invece di specificare un file .ico, spuntare la casella per specificare un file res. Nei .res file che è possibile avere più icone. Vedere qui per quello che voglio dire.

Ogni icona comprende un 256x256xRGB (PNG Cmopressed) immagine "grado Vista", un'immagine di 256x256x32bit, e la solita cascata di 48x48, 32x32, 16x16 e le immagini in diverse combinazioni di colore. Se osservo l'exe con conseguente Explorer, vedo i grandi belle 256x256 immagini di Vista.

Posso quindi associare un'estensione di file per la mia app, utilizzando il tasto destro del mouse> "Apri con ..."> Imposta clickstream programma predefinito in Esplora risorse di Vista. Ma l'icona visualizzata accanto al documento che è poi una piccola versione del l'icona dell'applicazione, sovrapposto in cima a quello che sembra un foglio di carta bianca con un angolo ripiegato.

Il risultato è che l'immagine originale è troppo sopravvalutato per piccolo per essere visibile, quando si è mostrata in versione "piccola icona". Sembra terribile.

So che è possibile omettere completamente il pezzo di carta piegato, o almeno per ottenere un'immagine molto più grande sovrapposto su di esso. L'icona di un file C #, per esempio, ha un foglio di carta piegato, ma il C # emblema è grande e visibile. Come posso ottenere questo? L'icona per i file .zip quando è installato WinZip 12, è grande e visibile, e non ha alcun foglio di carta piegato.

è l'icona-per-documenti diversi rispetto l'icona-per-il-applicazione? C'è qualcosa nella mia app che devo fare per registrare un icona che Vista utilizzerà per i documenti associati alla mia app?

È stato utile?

Soluzione

Le icone e le associazioni di file per le estensioni dei file sono elencati nel Registro di sistema. Più specificamente, le voci HKEY_CLASSES_ROOT\.ext contengono il tipo di contenuto, tipo percepito e il valore (Default) è l'associazione effettivo. Ad esempio, Cs file hanno valore predefinito di VisualStudio.cs.9.0 (ho VS 2008). È possibile controllare il HKEY_CLASSES_ROOT\VisualStudio.cs.9.0 per visualizzare l'icona reale, programmi e comandi associati a questo tipo di file. In particolare, il HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon è la voce che dice Explorer quale icona da mostrare per i file di questo tipo. Si punta a un binario e un ID di risorsa in quel binario.

Quando si associa un tipo di file con un programma attraverso il tasto destro del mouse -> Apri con ..., non si specifica l'icona di default, in modo da Explorer prende l'icona della tua app e sovrapposizioni sopra l'icona di un documento generico.

L'approccio giusto sarebbe quello di includere come parte della configurazione delle voci di registro appropriate per associare il tipo di file con l'applicazione e la tua icona. I valori esatti di registro è necessario includere dipendono i comandi che si desidera aggiungere al menu contestuale per quel tipo di file, ma per lo meno si desidera che il comando Apri. Nel caso di file Cs, si può vedere che c'è una HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open voce con valore (Default) contenente l'applicazione da avviare quando viene invocato il comando Apri. (È possibile ignorare la parte ddeexec per ora)

Tieni presente che il HKEY_CLASSES_ROOT è una vista mappata di due rami di registro: HKEY_CURRENT_USER\Software\Classes e HKEY_LOCAL_MACHINE\Software\Classes. Se si desidera che il file di associazione per essere per tutti gli utenti, è necessario scrivere a HKEY_LOCAL_MACHINE. La configurazione deve essere eseguito come amministratore per farlo. In caso contrario, il tentativo di scrivere a HKEY_CLASSES_ROOT sarà o non riuscire con accesso negato o scrivere a HKEY_CURRENT_USER e fare l'associazione solo per l'utente corrente. (Quale dei due esattamente accadrà dipende da molte cose, come quello che il sistema operativo è, se l'utente è admin, ma non elevata e così via)

Si può leggere su tutto questo in Personalizzazione Tipi di file ( File Associazioni) sezione su MSDN. In particolare, Tipi di file e Registrazione di programmi con programmi client darebbe le basi di come esattamente fare questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top