Extraire l'icone d'un fichier du shell [Résolu]

warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 16:41 - Dernière réponse : Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention
- 1 févr. 2006 à 21:40
je voudrai pouvoir acceder et afficher dans ma form l'icone d'un fichier... pas un executable mais par ex un fichier txt... si vous avez word vous aurez donc une icone particuliere pour votre fichier txt... je suppose que cela est geré dans le shell


comment donc recuperer cette icone pour l'afficher?
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
sebmafate 4947 Messages postés lundi 17 février 2003Date d'inscription 14 février 2014 Dernière intervention - 1 févr. 2006 à 17:10
3
Merci
en .net 2 ?
en .net 1 ?

en .net 2 : Icon.ExtractAssociatedIcon()

pour le .net 1... je te dirais ca ce soir... si personne n'est passé avant

Sébastien FERRAND
[MVP Visual C#]

Merci sebmafate 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 102 internautes ce mois-ci

Commenter la réponse de sebmafate
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 17:13
0
Merci
2.0
merci tu m'as bien aidé!


la société de consommation porte mal son nom car un con fait rarement une sommation avant de dire une connerie en société
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 1 févr. 2006 à 17:13
0
Merci
Salut,

Oui, via la méthode SHGetFileInfo.

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 17:15
0
Merci
ok merci
je vais essayer de me debrouiller ave cça
le but serait de mettre une icone dans un listview a coté du nom du fichier...

desole pour les retours a la ligne manquants mais opera n'aime pas le freetextebox
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 1 févr. 2006 à 17:22
0
Merci
Arf, je m'étais endormi sur le clavier :p

Pour la FTB, c'est connu comme problème, suffit de prendre IE ou FF.

Si tu es en 2.0 MS à déjà fait le boulot pour toi avec la méthode que t'as donner seb, je n'avais pas vu son message, et j'étais parti sur du 1.1

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 17:25
0
Merci
pourtant ça ne marche pas
mais je pense que je m'y prend mal
j'ai mis dans mon datalistview une collone definie pour supporter les images

et je fais list.Icon = Icon.ExtractAssociatedIcon(FileName[i]);
mais j'ai la petite image qui montre que l'image n'a pas ete trouvé dans la collone de mon datalistview
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 1 févr. 2006 à 18:00
0
Merci
Je suppose que par "datalistview" tu voulais dire DataGridView : as tu mit la propriété DataGridViewImageColumn.ValuesAreIcons à true ?

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 18:02
0
Merci
oui pardon
oui je l'ai fais :(
Commenter la réponse de warenbe
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 18:07
0
Merci
TROUVE
j'utilisais mal le datagridview
desole pour le derangement

merci pour l'aide
Commenter la réponse de warenbe
cs_coq 6366 Messages postés samedi 1 juin 2002Date d'inscription 2 août 2014 Dernière intervention - 1 févr. 2006 à 18:11
0
Merci
Tu pourrais peut être décrire l'erreur et la solution, des fois que quelqu'un avec le même problème atterirais ici :-)

/*
coq
MVP Visual C#
*/
Commenter la réponse de cs_coq
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 18:13
0
Merci
ben en fait je savais absolument pas utiliser le datagridview. je decouvre... donc pour decrire mon erreur je devrais faire un roman
ou alors je resume en quelques mots: penser a jeter un coup d'oeil a la msdn avant de faire n'importe quoi....

sinon question quand meme... les icones obtenues sont assez grosseS. il a t il possibilités de les reduires? j'obtient du 32x32 et je veux du 16x16 ;(
Commenter la réponse de warenbe
warenbe 145 Messages postés dimanche 2 décembre 2001Date d'inscription 10 septembre 2009 Dernière intervention - 1 févr. 2006 à 18:28
0
Merci
en fait voila comment je fais:

Icon ico = Icon.ExtractAssociatedIcon(FileName[i]);
dvimg.ValuesAreIcons = true;
DataGridViewRowCollection row = dataGridView1.Rows;
row.Add(ico);
Commenter la réponse de warenbe
Charles Racaud 3181 Messages postés dimanche 15 février 2004Date d'inscription 9 avril 2017 Dernière intervention - 1 févr. 2006 à 21:40
0
Merci
Bonsoir,

Tu ne peut pas choisir la taille avec Icon.ExtractAssociatedIcon.
Tu peut utiliser la méthode SHGetFileInfo comme à dit coq:

using System.Runtime.InteropServices;

[...]

[DllImport("shell32.dll", EntryPoint = "SHGetFileInfo")]
private static extern int SHGetFileInfoA(string pszPath, int dwFileAttributes, ref SHFILEINFO psfi, int cbFileInfo, int uFlags);
private const short SHGFI_ICON = 0x000000100;

[StructLayout(LayoutKind.Sequential)]
private struct SHFILEINFO
{
public IntPtr HIcon;
public int Icon;
public int Attributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string DisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string TypeName;
}
public enum IconSize : short { Small 0x000000001, Large 0x000000000, }
public System.Drawing.Icon GetSmallIcon(string FileName, IconSize Size)
{
try
{
SHFILEINFO ShInfo = new SHFILEINFO();
SHGetFileInfoA(FileName, 0, ref ShInfo, (int)System.Runtime.InteropServices.Marshal.SizeOf(ShInfo), SHGFI_ICON | (short)Size);
return System.Drawing.Icon.FromHandle(ShInfo.HIcon);
}
catch
{
return null;
}
}

pour appeler la fonction:
Icon ico = GetSmallIcon(FileName[i], IconSize.Small)

Kenji

Merci de cliquer sur "Réponse acceptée" si une réponse vous convient.
Commenter la réponse de Charles Racaud

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.