Copier une icône des Ressources vers l'ordinateur [Résolu]

kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 10 nov. 2016 à 15:45 - Dernière réponse : kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention
- 21 nov. 2016 à 13:22
Bonjour,
Dans le dernier poste que j'ai posté " Vb.net Créer un Raccourci de Fichier ou Dossier ", il y avait beaucoups de propositions, j'ai décidé de copier l'icône qui se trouve dans les Ressources vers l'ordinateur, après l'utiliser comme icône pour le raccourci
Pour là copier j'ai utilisé tout d'abord le code suivant (je l'utilise souvent pour copier des fichiers des Ressources vers l'ordinateur) :
System.IO.File.WriteAllBytes(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), My.Resources.icone1)

Mais cela ne fonction pas
J'ai fais des recherche est j'ai fini par trouver le code suivant :
My.Resources.icone1.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\icone1.ico")

L'icône est bien copier dans l'ordinateur, mais elle est inutilisable (je ne peux pas l'utiliser comme icône pour le raccourci)
Aidez moi s'il vous plaît à régler ce problème
Merci d'avance pour votre aide


Afficher la suite 

15 réponses

Répondre au sujet
cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - Modifié par cs_Le Pivert le 10/11/2016 à 18:40
0
Utile
Bonjour,

Comme ceci:

My.Resources.icone1.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\icone1.ico", System.Drawing.Imaging.ImageFormat.Icon)


Sinon une autre manière:

 Dim path As String = Application.StartupPath
        path = Replace(path, "bin\Debug", "Resources")
        path = path & "\icone1.ico"
        FileCopy(path, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\icone1.ico")


@+ Le Pivert
Commenter la réponse de cs_Le Pivert
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 10 nov. 2016 à 20:01
0
Utile
Salut cs_Le Pivert
merci de m'avoir répondu aussi rapidement
1er mot : pour la deuxieme méthode :
Dim path As String = Application.StartupPath
path = Replace(path, "bin\Debug", "Resources")
path = path & "\icone1.ico"
FileCopy(path, Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\icone1.ico")

elle ne sera pas très utile car après avoir généré le exe le chemin de bin,Debug ou Resources ne sera plus disponible (seul l'application exe sera déplacé et utilisé dans d'autre ordinateur)
2eme mot : concernant la première méthode :
My.Resources.icone1.Save(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\icone1.ico", System.Drawing.Imaging.ImageFormat.Icon)

il y a deux méthode pour ajouter une icône au Resources :
1. ajouter la ressource en tant qu'image (dans la liste des images)
c'est bien possible de copier l'icône, mais toujours impossible de l'utiliser et il y a une différence entre l'icône originale et l'icône copier :

2. Ajouter l'icône en tant qu'icône (dans la liste des icônes)
le code ne fonction pas, il y a une erreur qui s'affiche pour le chemin ou l'icône sera copier ("Impssible de convertir une valeur de type 'String' en 'System.IO.Stream'.")
Commenter la réponse de kikou93
cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 11 nov. 2016 à 08:06
0
Utile
8
Si je comprends bien tu veux simplement extraire une icone d'un executable?

Voir ceci:

http://codes-sources.commentcamarche.net/source/46960-extraire-tous-les-icones-d-un-executable-ou-d-une-dll

cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention > kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 11 nov. 2016 à 18:05
Ton code ne fonctionne pas chez moi:
Un message d'erreur sur cette ligne:

 My.Resources.Shell32_024.Save(Chemin_PNG, System.Drawing.Imaging.ImageFormat.Png)


impossible de convertir une valeur de type String en System.IO.Stream

Ce n'est pas grave du moment que cela fonctionne chez toi.

Il y a certaines bizarreries!
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention > cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 11 nov. 2016 à 18:32
Cette erreur s'afficher pour moi quand j'ai essayé d'enregistrer une icône dans l'ordinateur, je vais chercher une solution, je te tiendrai au courant
Merci beaucoup pour ton aide
cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention > kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 12 nov. 2016 à 07:54
Pour creer un raccourci bureau voir ceci:


http://plasserre.developpez.com/cours/vb-net/?page=windows-forms5#LX-Q-4

Qui t'évitera d'avoir une erreur si tu mets Option Strict On (apprends toi à le mettre), chez moi il y est par défaut (voir option Projets et solutions, Valeur par défaut VB) sur cette ligne:

oShell = CreateObject("WScript.Shell")


et d'autres en l'occurence

@+ Le Pivert
cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention > cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 12 nov. 2016 à 07:59
Pour ma part, j'aurais préférer mettre l'icône avec l’exécutable pour faire mon raccourci. Cela aurait évité toutes ces lignes de code pour enregistrer un fichier ico en png, pour ensuite le convertir en ico!
@+
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention > cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 20 nov. 2016 à 18:29
Salut cs_Le Pivert
j'aurais bien aimé moi aussi que ce soit facile,utiliser une seul ligne qui copie l'icône directement dans l'ordinateur au lieu d'utiliser une dizaine de lignes
mais le code d'une seul ligne que j'ai proposé plus haut copie l'icône mais après elle est inutilisable
une autre solution plus facile existe sûrement, je vais chercher plus, je te tienderai au courant si je trouve une solution
merci pour ton aide
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 21 nov. 2016 à 09:08
0
Utile
1
J'ai trouvé une solution pour mettre l'icône de l'executable sur le Bureau:

une ImageList et une Picturebox

 Dim oBitmap As Bitmap
        Dim HIcon As IntPtr
        Dim newIcon As Icon
        Dim oFileStream As IO.FileStream
        Dim ico As Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath) 'chemin de l'executable
        ImageList1.Images.Add(ico)
        PictureBox1.Image = ImageList1.Images(0)
        oBitmap = New Bitmap(PictureBox1.Image)
        'Set transparence color.
        oBitmap.MakeTransparent(Color.Transparent)
        oBitmap.SetResolution(96, 96)
        ' Get an Hicon for myBitmap.
        HIcon = oBitmap.GetHicon()
        ' Create a new icon from the handle.
        newIcon = System.Drawing.Icon.FromHandle(HIcon)
        ' Set the form Icon attribute to the new icon.
        Me.Icon = newIcon
        oFileStream = New IO.FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Monicone.ico", IO.FileMode.CreateNew)
        newIcon.Save(oFileStream)
        oFileStream.Close()
        MessageBox.Show("Opération réussie.", "Extraire icône", MessageBoxButtons.OK, MessageBoxIcon.Information)


Cela fait quand même moins de manipulation !
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 21 nov. 2016 à 12:21
Bonjour cs_Le Pivert
C'est une bonne solution, mais es que en peut augmenter la taille de l'icône récupérer (16 X 16 trop petite)
Commenter la réponse de cs_Le Pivert
cs_Le Pivert 4767 Messages postés jeudi 13 septembre 2007Date d'inscriptionContributeurStatut 13 décembre 2017 Dernière intervention - 21 nov. 2016 à 13:01
0
Utile
1
Bien sur, tu aurais trouvé la solution ici:

http://codes-sources.commentcamarche.net/source/101737-convertir-image-bmp-en-ico

   Dim HIcon As IntPtr
        Dim newIcon As Icon
        Dim oFileStream As IO.FileStream
        Dim ico As Icon = Icon.ExtractAssociatedIcon(Application.ExecutablePath) 'chemin de l'executable
        ImageList1.Images.Add(ico)
        PictureBox1.Image = ImageList1.Images(0)
        Dim imageSource As New Bitmap(PictureBox1.Image)
        'crée un Bitmap avec la nouvelle taille
        Dim bp As New Bitmap(32, 32)
        Dim gr As Graphics = Graphics.FromImage(bp)
        'copie l'image source dans la nouvelle image
        gr.DrawImage(imageSource, 0, 0, bp.Width + 1, bp.Height + 1)
        bp.MakeTransparent(Color.Transparent)
        bp.SetResolution(96, 96)
        ' Get an Hicon for myBitmap.
        HIcon = bp.GetHicon()
        ' Create a new icon from the handle.
        newIcon = System.Drawing.Icon.FromHandle(HIcon)
        ' Set the form Icon attribute to the new icon.
        Me.Icon = newIcon
        oFileStream = New IO.FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) & "\Monicone.ico", IO.FileMode.CreateNew)
        newIcon.Save(oFileStream)
        oFileStream.Close()
        MessageBox.Show("Opération réussie.", "Extraire icône", MessageBoxButtons.OK, MessageBoxIcon.Information)


Et voilà
kikou93 384 Messages postés mardi 4 février 2014Date d'inscription 26 août 2017 Dernière intervention - 21 nov. 2016 à 13:22
Oui c'est vrais, J'ai déjà vue ton dernier logiciel, mais je n'ai pas lu le code en détail
Merci pour ton aide tu m'a beaucoup aidé
Commenter la réponse de cs_Le Pivert

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.