Extraire l'icone d'un fichier du shell

Résolu
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009 - 1 févr. 2006 à 16:41
 Utilisateur anonyme - 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?

13 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 36
1 févr. 2006 à 17:10
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#]
3
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
1 févr. 2006 à 17:13
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é
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 févr. 2006 à 17:13
Salut,

Oui, via la méthode SHGetFileInfo.

/*
coq
MVP Visual C#
*/
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
1 févr. 2006 à 17:15
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 févr. 2006 à 17:22
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#
*/
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
1 févr. 2006 à 17:25
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
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 févr. 2006 à 18:00
Je suppose que par "datalistview" tu voulais dire DataGridView : as tu mit la propriété DataGridViewImageColumn.ValuesAreIcons à true ?

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

merci pour l'aide
0
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
1 févr. 2006 à 18:11
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#
*/
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
1 févr. 2006 à 18:13
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 ;(
0
warenbe Messages postés 145 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 septembre 2009
1 févr. 2006 à 18:28
en fait voila comment je fais:

Icon ico = Icon.ExtractAssociatedIcon(FileName[i]);
dvimg.ValuesAreIcons = true;
DataGridViewRowCollection row = dataGridView1.Rows;
row.Add(ico);
0
Utilisateur anonyme
1 févr. 2006 à 21:40
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.
0
Rejoignez-nous