[WPF] Ajouter une image comme ressource intégrée à l’exécutable

Cette méthode permet d’éviter l’oubli du ou des fichiers des images/icônes utilisés dans le répertoire de l’application lors de son déploiement.

La procédure à suivre est la suivante :

1. Ajouter l’image à la solution via un clic droit soit sur le projet, soit sur un dossier appartenant à celui-ci et destiné à contenir les différentes images.

Sélectionner Ajouter > Élément existant. A partir de la boite de dialogue qui s’ouvre, sélectionner l’image à ajouter.

2. Dans les propriétés de l’image ajoutée, vérifier que l’option « Action de génération » est bien « Resource ».

3. Dans le code XAML de la fenêtre qui doit utiliser cette image, ajouter celle-ci dans les ressources en utilisant le code suivant :

où
Key : est la clé de l’image. La ressource sera utilisable via cette clé.
UriSource : est le chemin du fichier image.

4. Utiliser l’image dans un contrôle Image ou comme icône dans un bouton par exemple. Le code suivant illustrant la méthode à utiliser pour y parvenir :

WPF – La correction orthographique en bref

Les composants de saisie de texte (TextBox et RichTextBox) possèdent la propriété SpellCheck qui permet d’activer la correction orthographique.
Si cette propriété est activée (donc que sa valeur vaut true), les éventuelles erreurs détectées dans le texte contenu dans ces composants seront soulignées comme dans un éditeur tel que Microsoft Word. D’ailleurs le dictionnaire utilisé pour les propositions de correction est une copie de celui de cet éditeur. Il n’est toutefois pas obligatoire que Microsoft Word soit installé sur la machine pour pouvoir utiliser cette fonctionnalité. Le code suivant va permettre d’activer cette fonctionnalité pour la langue française dans la déclaration XAML d’un TextBox :

SpellCheck.IsEnabled="True" Language "fr-FR"

Ce qui donnera comme résultat dans une petite application d’exemple :

WPF - Traduction orthographique - 1

Voici donc encore un des nombreux avantages du WPF maintenant qu’il est de plus en plus important d’avoir des applications multilingues.

[C#] Lister les périphériques de stockage USB en utilisant WMI

Il arrive que l’on doive détecter les disques dur connectés à l’ordinateur par USB.

Il existe certes la classe DriveInfo de l’espace de nom System.IO. Mais après différents tests, j’ai constaté que lorsqu’on l’utilisait pour obtenir les informations concernant un disque dur externe connecté en USB, la propriété DriveType de cette classe renvoyait la valeur Fixed alors qu’on aurait pu s’attendre à la valeur Removable. Donc en utilisant cette classe, un disque dur externe USB est reconnu comme s’il s’agissait d’un disque interne de la machine.

Il existe toutefois une solution en utilisant WMI (Windows Management Instrumentation). Il permet entre autre d’accéder aux ressources d’un ordinateur et d’en obtenir les informations.

Voici donc un exemple de code permettant de récupérer la liste des lecteurs logiques se trouvant sur des disques dur connectés via USB :

foreach (ManagementObject drive in new ManagementObjectSearcher("select * from Win32_DiskDrive where InterfaceType='USB'").Get())
{
    foreach (ManagementObject partition in new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskDrive.DeviceID='" + drive["DeviceID"] + "'} WHERE AssocClass =Win32_DiskDriveToDiskPartition").Get())
    {
       foreach (ManagementObject disk in new ManagementObjectSearcher("ASSOCIATORS OF {Win32_DiskPartition.DeviceID='" + partition["DeviceID"] + "'} WHERE AssocClass =Win32_LogicalDiskToPartition").Get())
        {
            Console.WriteLine(disk["Name"]);
        }
    }
}

L’espace de nom à inclure étant System.Management