2009-02-24 12 views
5

Posso influire sul processo?
Ho un'applicazione incorporata in .NET 3.5/VS2008. Ho incorporato più icone nell'app con un file .ris win32. Questo viene fatto nella finestra Proprietà per il Progetto in VS2008 - invece di specificare un file .ico, selezionare la casella per specificare un file .res. Nel file .res puoi avere più icone. Vedi here per quello che intendo.In che modo Vista genera l'icona per i documenti associati alla mia applicazione?

Ogni icona include un'immagine "Vista grade" 256x256xRGB (PNG Cmopressed), un'immagine 256x256x32 bit e la consueta cascata di immagini 48x48, 32x32 e 16x16 in varie combinazioni di colori. Se visualizzo l'exe risultante in Explorer, vedo le bellissime immagini di 256x256 Vista.

Posso quindi associare un'estensione di file alla mia app, utilizzando il tasto destro del mouse> "Apri con ..."> Imposta il flusso di clic del programma predefinito in Vista Explorer. Ma l'icona visualizzata accanto al documento è quindi una versione ridotta dell'icona dell'app, sovrapposta a quella che sembra un foglio di carta bianco con un angolo ripiegato.

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

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

L'icona per i documenti è diversa dall'icona per l'applicazione? C'è qualcosa nella mia app che devo fare per registrare un'icona che Vista userà per i documenti associati alla mia app?

risposta

13

Le icone e le associazioni di file per le estensioni dei file sono elencate nel registro. In particolare, le voci HKEY_CLASSES_ROOT\.ext contengono il tipo di contenuto, il tipo percepito e nel valore (Default) è l'associazione effettiva. Ad esempio, i file .cs hanno il valore predefinito di VisualStudio.cs.9.0 (ho VS 2008). È possibile controllare lo HKEY_CLASSES_ROOT\VisualStudio.cs.9.0 per visualizzare l'icona, il programma e i comandi associati a questo tipo di file. In particolare, lo HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon è la voce che indica a Explorer quale icona mostrare per i file di questo tipo. Indica un binario e un ID di risorsa in quel binario.

Quando si associa un tipo di file a un programma tramite il clic destro -> Apri con ..., non si specifica un'icona predefinita, quindi Explorer prende l'icona dell'app e la sovrappone a un'icona di documento generico .

L'approccio corretto sarebbe quello di includere come parte della configurazione le voci di registro appropriate per associare il tipo di file all'applicazione e all'icona. I valori esatti del registro che devi includere dipendono dai comandi che vuoi aggiungere al menu di scelta rapida per quel tipo di file, ma per lo meno vuoi il comando Apri. Nel caso di file .cs, è possibile vedere che esiste una voce HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open con il valore (Default) contenente l'applicazione da avviare quando viene richiamato il comando Apri. (È possibile ignorare la parte ddeexec per ora)

Tenete a mente 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 l'associazione file sia per tutti gli utenti, è necessario scrivere a HKEY_LOCAL_MACHINE. La configurazione deve essere eseguita come amministratore per farlo. In caso contrario, il tentativo di scrivere su HKEY_CLASSES_ROOT fallirà con l'accesso negato o scrivere su HKEY_CURRENT_USER e fare l'associazione solo per l'utente corrente.(Quale dei due esattamente succederà dipende da diverse cose, come il sistema operativo, se l'utente è admin ma non elevato e così via)

Puoi leggere tutto ciò nella sezione Customizing File Types (Files Associations) su MSDN. In particolare, File Types e Registering Programs with Client Programs ti darebbero le basi su come esattamente farlo.

+0

WOW! Bella risposta. Perfezionare! Proprio quello che stavo cercando! – Cheeso

Problemi correlati