2009-03-25 9 views
1

Certains programmes Windows peuvent utiliser des icônes différentes pour différents fichiers ayant la même extension.Icône personnalisée par instance de fichier

Exemple

  • .sln peut afficher une icône différente en fonction de la version de Visual Studio la solution a été faite (en fait, déterminé par le numéro de version dans la ligne supérieure dans le .sln)
  • fichiers Photoshop .psd ont des icônes avec une miniature de l'image
  • un fichier de raccourci .url a le favicon de page si ouvert, ou sauvé de, Internet Explorer

Je devine que doit être personnalisé pour cet ordinateur seulement. Sur une boîte sans Visual Studio installé, les fichiers .sln ont simplement l'icône par défaut "Je ne sais pas ce programme". Y at-il quelque chose qui doit être changé dans le registre?

Comment est-ce que je peux faire ceci? Je voudrais avoir la possibilité d'associer des icônes personnalisées avec des fichiers à mes propres programmes.

[Éditer] Je vraiment avec je pourrais le faire dans le code managé. C'est possible (< SDK v1.1 > \ Samples \ Technologies \ Interop \ Applications \ ShellCmd) mais il semble également être potentiellement dangereux et le mauvais outil pour le travail en pratique: http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/1428326d-7950-42b4-ad94-8e962124043e/. J'espérais vraiment que MS aurait une API bien gérée pour ce genre de choses maintenant.

Répondre

3

Vérifiez ce C++ code on CodeProject: essentiellement, vous écrivez un gestionnaire COM et l'enregistrez pour votre extension. Sachez que vous pouvez gravement endommager le processus Explorer si vous perdez des ressources dans les gestionnaires d'icônes ou les extensions de shell ... C++ peut être un défi, mais je ne recommanderais pas cela en C# ou Java pour des raisons de consommation de mémoire (un copie distincte du code cadre pour chaque extension/gestionnaire!).

+0

Excellent lien et bon avertissement sur .NET/Java. Je n'ai jamais codé en C++ auparavant. Est-ce au-delà de mon niveau de compétence si j'apprends le C++? – Dinah

+0

Vous pouvez implémenter des interfaces COM dans .NET assez facilement, mais le processus Explorer sera gonflé. Cela dépend de ce que vous voulez réaliser ... mais une petite empreinte mémoire est un plus pour les plugins! –

+0

C++ et COM en une seule fois sont des programmations assez lourdes: pas impossible, mais beaucoup de choses peuvent vous trébucher, pas moins de fuites. –

Questions connexes