mardi 23 avril 2013

Comment extraire icône de fichier

Comment extraire icône de fichier

Exemple de code pour extraire toutes les icônes à partir d'un fichier en utilisant shell32


Comment pourriez-vous extraire toutes les icônes à partir d'une DLL ou un fichier à l'aide de .NET? Si vous utilisez shell32.dll, c’est simple. Parfois, le framework. NET ne peut pas vous donner ce dont vous avez besoin. Il faut donc s'appuyer sur des techniques plus anciennes.

Voici un programme où vous pouvez charger un fichier et d'extraire toutes les icônes en deux ImageList. La première est pour les petites icônes et la seconde pour les plus grands. Toutes ces icônes seront injectées dans un ListView. Ce programme est gratuit et vous pouvez facilement visualiser toutes les icônes de tous les fichiers. Pretty cool!

Voici le code en VB.NET et c’est facilement transformable en C #.

''' <summary>
''' Author : Check-Kay Wong
'''
''' die Gemeinschafts-funtion Icon.ExtractAssociatedIcon von
'''  System.Drawing.Icon
'''Nur ein einziges Argument, die Wahl auf das erste Symbol aus einer Datei.
''' Da die grundlegenden ExtractIcon von Framework.NET nicht über enought Optionen,
'' 'Müssen zu importieren und zu verwenden ExtractAssociatedIcon von Shell32.dll
''' </summary>
''' <remarks></remarks>
Public Class Form1

    ''' <summary>
    ''' this is one way to import a dll
    ''' </summary>
    ''' <param name="hinst"></param>
    ''' <param name="lpiconpath">ENGLISH : file path ; FRANCAIS : chemin d'accès au fichier</param>
    ''' <param name="lpiicon">ENGLISH : icon number or index ; FRANCAIS : numéro d'icône</param>
    ''' <returns>ENGLISH : return a handle ; FRANCAIS: retourne un pointeur</returns>
    ''' <remarks></remarks>
    <System.Runtime.InteropServices.DllImport("shell32.dll")> Shared Function _
    ExtractAssociatedIcon(ByVal hinst As IntPtr, ByVal lpiconpath As String, _
                           ByRef lpiicon As Integer) As IntPtr
    End Function



    ''' <summary>
    ''' this is another way to import a dll
    ''' </summary>
    ''' <param name="lpiconpath">ENGLISH : file path ; FRANCAIS : chemin d'accès au fichier</param>
    ''' <param name="lpiicon">ENGLISH : icon number or index ; FRANCAIS : numéro d'icône</param>
    ''' <returns>ENGLISH : return a handle ; FRANCAIS: retourne un pointeur</returns>
    ''' <remarks></remarks>
    'Private Declare Function ExtractAssociatedIcon(ByVal hinst As IntPtr, ByVal lpiconpath As String, _
    '                       ByRef lpiicon As Integer) As IntPtr


    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.TextBox1.Text = My.Application.Info.AssemblyName.ToString
        TextBox1.Text = Environment.GetFolderPath(Environment.SpecialFolder.System) & "\shell32.dll"
    End Sub

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

    End Sub



    Private Sub Button1_MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles Button1.MouseUp
        '--------------------------------------------------------
        ' this part only help getting a file name
        '--------------------------------------------------------
        If Not IO.File.Exists(TextBox1.Text) Then
            Using oOpenFileDialog As New OpenFileDialog
                oOpenFileDialog.Multiselect = False
                If oOpenFileDialog.ShowDialog = Windows.Forms.DialogResult.OK Then
                    TextBox1.Text = oOpenFileDialog.FileName
                End If
            End Using
        End If



        '--------------------------------------------------------
        ' this part only help getting a file name
        '--------------------------------------------------------
        Dim hIcon As IntPtr
        Dim sPath As String = TextBox1.Text
        Dim oIcon As Icon
        Dim index1 As Integer

        Try

            ListView1.Items.Clear()
            ImageList1.Images.Clear()
            ImageList2.Images.Clear()



            ListView1.SmallImageList = ImageList1
            ListView1.LargeImageList = ImageList2

            'i decided to load the first 300 icons.
            'using the shell32.dll function and
            ' and not the one from the Framework .NET
            For index1 = 0 To 300 Step 1
                hIcon = ExtractAssociatedIcon(Me.Handle, sPath, index1)
                oIcon = Icon.FromHandle(hIcon)
                ImageList1.Images.Add(oIcon)
                ImageList2.Images.Add(oIcon)
                ListView1.Items.Add(index1.ToString, index1)
            Next index1


        Catch ex As Exception
            MsgBox(index1)
        End Try
    End Sub
End Class



Oui, bien sûr, le programme pourrait être amélioré. Par exemple, prévoir quelque chose si l'utilisateur tente d'ouvrir un fichier qui ne contient pas beaucoup d'icônes.

N'hésitez pas à laisser un commentaire ou de partager ce post si vous l'aimez.

Vous pouvez télécharger l'exemple de projet à partir de cette page : Download Project ExtractIconsFromFilesSample.zip.

lundi 22 avril 2013

Renommeur de dossiers Windows

Renommeur de dossiers Windows

Avec code source en visual basic. Gratuit.


Dernier après-midi, j'ai eu une petite fête pour une amie de ma femme au restaurant Pacini à Sainte-Julie, dans la province du Québec. Je pris beaucoup de photos avec mon appareil photo de Canon. J’utilise le logiciel ZoomBrowser Ex de Canon pour facilement importer toutes les photos que je veux dans mon ordinateur. Le programme crée automatiquement le dossier et les sous-dossiers en fonction de l'année, le mois, le jour et au besoin avec une description. Géniale! Mais le problème est le séparateur de date. Tous les dossiers créés avec ZoomBrowser Ex de Canon utilisent le underscore "_" et je veux utiliser un trait d'union "-". J'ai vérifié partout dans ce logiciel et je n'ai pas trouvé d'option quant à la séparation des dates. Qu'est-ce qui se passe si j'ai beaucoup de photos dans un grand nombre de dossiers? Je dois les renommer un par un? Un travail de bras !
tiret et soulignéHonnêtement, j'adore mon petit appareil photo de Canon et je tiens à utiliser cet importateur pendant des années, mais je n'ai jamais pensé que je pourrais programmer un petit programme pour renommer mon dossier la façon dont je les aime. Aujourd'hui, j'ai décidé de programmer une petite application pour m'aider à renommer tous les dossiers et sous mes dossiers de Photos. De cette façon, je n'aurai pas à chercher un dossier parce qu'ils sont classés en ordre alphabétique en raison du souligné underscore par rapport au trait d'union.

vendredi 19 avril 2013

LICENCE PUBLIQUE LIMITÉE

LICENCE PUBLIQUE LIMITÉE
La présente licence régit l'utilisation du code désigné comme « échantillon » OU « exemple » sur ce site Web sans contrat de licence, tel que stipulé dans l'article ci-dessus intitulé « AVERTISSEMENT SPÉCIFIQUE AU LOGICIEL DISPONIBLE SUR CE SITE WEB ». Vous acceptez cette licence en utilisant ce code (le « logiciel »). Si vous n'acceptez pas la licence, n'utilisez pas le logiciel.
1. Définitions
Les termes « reproduire », « reproduction », « œuvres dérivées » et « distribution » ont la même signification dans la présente licence que dans les lois américaines relatives aux droits d'auteur.
Une « contribution » représente le logiciel initial, ou tout ajout ou changement apporté au logiciel.
Un « collaborateur » désigne toute personne qui distribue sa contribution dans le cadre de la présente licence.
Les « brevets sous licence » sont les revendications du brevet d'un collaborateur telles que mentionnées dans sa contribution.
2. Concession de droits.
(A) Concession de droits d'auteur- Sous réserve du respect des termes de la présente licence, y compris des conditions et des limitations de la licence énoncées à l'article 3, chaque collaborateur vous concède une licence de droits d'auteur non exclusive, valable dans le monde entier et libre de redevances qui vous autorise à reproduire sa contribution, à préparer des œuvres dérivées de sa contribution et à distribuer sa contribution ou toute œuvre dérivée que vous avez créée.
(B) Concession de brevets- Sous réserve du respect des termes de la présente licence, y compris des conditions et des limitations de la licence énoncées à l'article 3, chaque collaborateur vous concède une licence non exclusive, valable dans le monde entier et libre de redevance au titre de ses brevets sous licence, qui vous autorise à effectuer, à faire effectuer, à utiliser, à vendre, à proposer à la vente, à importer et/ou à céder sa contribution dans le logiciel ou toute œuvre dérivée de sa contribution dans le logiciel.
3. Conditions et limitations
(A) Pas de licence de marque commerciale- La présente licence ne vous concède aucun droit d'utiliser le nom, le logo ou les marques du collaborateur.
(B) Si vous intentez une action à l'encontre d'un collaborateur pour des brevets contrefaits par le logiciel, votre licence de brevets concédée par le collaborateur pour le logiciel prend fin automatiquement.
(C) Si vous distribuez une partie du logiciel, vous devez conserver toutes les mentions de droits d'auteur, de brevets, de marques ou de propriété intellectuelle figurant sur le logiciel.
(D) Si vous distribuez une partie du logiciel sous la forme de code source, vous devez le faire uniquement en vertu de la présente licence en fournissant une copie complète de cette licence dans le cadre de votre distribution. Si vous distribuez une partie du logiciel sous la forme de code objet ou de code compilé, vous devez le faire uniquement en vertu d'une licence conforme à la présente licence.
(E) Le logiciel est concédé sous licence « en l'état ». Vous assumez tous les risques liés à son utilisation. Les collaborateurs n'accordent aucune garantie expresse. Vous pouvez bénéficier de droits supplémentaires relatifs aux consommateurs en vertu du droit de votre pays, que cette licence ne peut modifier. Dans la mesure où cela est autorisé par la législation de votre pays, les collaborateurs excluent les garanties implicites de qualité, d'adéquation à un usage particulier et d'absence de contrefaçon.
(F) Limitation inhérente à la plateforme – Les licences concédées dans les articles 2(A) et 2(B) concernent uniquement le logiciel ou les œuvres dérivées que vous créez qui s'exécutent sur un système d'exploitation Microsoft Windows.


vendredi 5 avril 2013

Exemple de la méthode AcceptTcpClient en Visual Basic

Exemple de la méthode AcceptTcpClient en Visual Basic


Lorsque vous créez un TCPClient, ne suffit pas à démarrer votre serveur, vous devez également accepter les connexions entrantes. Dans un post précédent, j'ai expliqué en 3 étapes comment faire un client et un serveur, mais rien de plus: client-serveur Tutoriel aide de Visual Basic.
Vous devrez utiliser la méthode AcceptTcpClient en toute sécurité ramasser toute connexion entrante (côté serveur).
Si vous n'utilisez pas AcceptTcpClient ou tout autre équivalent, aucune communication ne démarrera. C'est comme essayer d'appeler quelqu'un et de ne jamais être en mesure de parler avec la personne à qui vous voulez parler. Le téléphone sonne et personne n'est là pour décrocher le combiné.


mercredi 3 avril 2013

Client-serveur Tutoriel aide de Visual Basic

Client-serveur Tutoriel aide de Visual Basic


are you ready to connect to your server? (y/n)
Ceci est un tutoriel pour les débutants ou les programmeurs intermédiaires. Cela va vous montrer comment la communication entre deux ordinateurs fonctionne en utilisant un schéma client-serveur. Avec Visual Basic comme langage de programmation, vous serez en mesure d'obtenir quelques-uns  des concepts classiques d'un  protocole de communication de données TCP / IP.