2009-02-24 2 views
5

Puis-je modifier le processus?
J'ai une application intégrée dans .NET 3.5/VS2008. J'ai intégré plusieurs icônes dans l'application avec un fichier win32 .res. Cela est fait dans la zone Propriétés du projet dans VS2008 - au lieu de spécifier un fichier .ico, cochez la case pour spécifier un fichier .res. Dans le fichier .res, vous pouvez avoir plusieurs icônes. Voir here pour ce que je veux dire. Chaque icône comprend une image «Vista grade» 256x256xRGB (PNG Cmopressed), une image 256x256x32bit et la cascade habituelle d'images 48x48, 32x32 et 16x16 dans différents combos de couleurs. Si je vois l'exe résultant dans l'explorateur, je vois les grandes belles images Vista 256x256.Comment Vista génère-t-il l'icône pour les documents associés à mon application?

Je peux ensuite associer une extension de fichier à mon application, en utilisant le clic droit> "Ouvrir avec ..."> Définir le programme par défaut clickstream dans l'explorateur de Vista. Mais l'icône affichée à côté du document est alors une petite version de l'icône de l'application, superposée à ce qui ressemble à une feuille blanche avec un coin plié.

Le résultat est que l'image originale est trop petite pour être visible, lorsqu'elle est affichée en version "petite icône". Cela a l'air terrible.

Je sais qu'il est possible d'omettre complètement le morceau de papier plié, ou au moins d'obtenir une image beaucoup plus grande superposée dessus. L'icône d'un fichier C#, par exemple, a une feuille de papier pliée, mais l'emblème C# est grand et visible. Comment puis-je l'obtenir? L'icône des fichiers .zip lorsque WinZip 12 est installé est grande et visible, et n'a pas de feuille de papier pliée.

L'icône pour les documents est-elle différente de l'icône pour l'application? Y at-il quelque chose dans mon application que je dois faire pour enregistrer une icône que Vista utilisera pour les documents associés à mon application?

Répondre

13

Les icônes et associations de fichiers pour les extensions de fichier sont répertoriées dans le registre. Plus précisément, HKEY_CLASSES_ROOT\.ext entrées contiennent le type de contenu, type perçu et dans la valeur (Default) est l'association réelle. Par exemple, les fichiers .cs ont la valeur par défaut VisualStudio.cs.9.0 (j'ai VS 2008). Vous pouvez vérifier le HKEY_CLASSES_ROOT\VisualStudio.cs.9.0 pour voir l'icône, le programme et les commandes associés à ce type de fichier. En particulier, HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\DefaultIcon est l'entrée qui indique à Explorer quelle icône afficher pour les fichiers de ce type. Il pointe vers un binaire et un ID de ressource dans ce binaire. Lorsque vous associez un type de fichier à un programme en cliquant avec le bouton droit de la souris -> Ouvrir avec ..., vous ne spécifiez pas d'icône par défaut, l'explorateur prend l'icône de votre application et la superpose à une icône de document générique .

La bonne approche serait d'inclure dans votre configuration les entrées de registre appropriées pour associer le type de fichier à votre application et votre icône. Les valeurs de registre exactes que vous devez inclure dépendent des commandes que vous voulez ajouter au menu contextuel pour ce type de fichier, mais vous voulez au moins la commande Ouvrir. Dans le cas de fichiers .cs, vous pouvez voir qu'il existe une entrée HKEY_CLASSES_ROOT\VisualStudio.cs.9.0\Shell\Commands\Open avec (Default) valeur contenant l'application à démarrer lorsque la commande Ouvrir est appelée. (Vous pouvez ignorer la partie ddeexec pour l'instant)

Gardez à l'esprit que le HKEY_CLASSES_ROOT est une vue cartographiée de deux branches de registre: HKEY_CURRENT_USER\Software\Classes et HKEY_LOCAL_MACHINE\Software\Classes. Si vous voulez que votre association de fichiers soit pour tous les utilisateurs, vous devez écrire à HKEY_LOCAL_MACHINE. Votre installation doit fonctionner en tant qu'administrateur pour cela. Sinon, la tentative d'écriture sur HKEY_CLASSES_ROOT échouera si l'accès est refusé ou écrira à HKEY_CURRENT_USER et n'effectuera l'association que pour l'utilisateur actuel.(Lequel des deux se produira exactement dépend de plusieurs choses, comme le système d'exploitation, si l'utilisateur est administrateur mais pas élevé et ainsi de suite)

Vous pouvez lire à propos de tout cela dans la section Customizing File Types (Files Associations) sur MSDN. En particulier, File Types et Registering Programs with Client Programs vous donner les bases de la façon de faire exactement cela.

+0

WOW! Très bonne réponse. Parfait! Exactement ce que je cherchais! – Cheeso

Questions connexes