Tutoriel : Création d’un AddIn Word

Table des matières 1. Préambule 2. Création de l’AddIn « MyCompany.WordAddIn » 3. Création de menus dans le Ribbon 4. Affichage d’un panneau WPF adjacent à la vue Document 5. Affichage de la sélection courante au clic sur le bouton du panneau 6. Gestion d’un contexte spécifique à chaque document ouvert (multi-instances) Téléchargement des sources:... » read more

Projet: Office Package Viewer

Office Package Viewer est un petit utilitaire écrit en C#/WPF que j’ai développé afin de visualiser rapidement le contenu d’un fichier répondant à la norme Office Open XML. Ce type de document (à savoir .docx, .xlsx, .pptx) est en fait une archive zip composée de plusieurs “PackagePart” parmis lesquelles on peut distinguer: Les parties de... » read more

Utilisation des Interop dans une application WPF : COM Exception

Au cours d’un projet WPF, il était nécessaire de disposer dans l’application d’un bouton “Prepare Email” qui devait automatiquement créer un nouveau message pré-rempli dans Outlook. Cependant sur certains postes de travail une erreur de type COM Exception apparaissait: Prepare Outlook MailItem Voyons tout d’abord le code (simplifié) qui ouvre un nouveau message Outlook pré-rempli:... » read more

Comment utiliser une librairie statique (.lib) en C++ dans un projet C# ?

Au cours du développement d’un projet j’ai été confronté à la problématique suivante: Comment utiliser une librairie dynamique (.lib) en C++ dans un projet C# ? Fichiers: Executables (38ko) Source (428ko) 1. Présentation du contexte La solution est composée des 3 projets suivants : MonApplication.exe [C++, MFC] Un client lourd qui doit fonctionner de Windows... » read more

Récupérer le nom de la classe et de la méthode courante

Il peut être très utile de récupérer le nom de la classe et de la méthode courante. Pour se faire, il suffit d’ajouter la méthode suivante dans une classe utilitaire : Utils.cs public static string GetCurrentMethodName() { StackTrace stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); return stackFrame.GetMethod().DeclaringType + " :: " + stackFrame.GetMethod().Name; }public... » read more

Envoyer un mail programmatiquement

1. Créer un nouveau projet 2. Ajouter la référence vers Microsoft.Office.Interop.Outlook 3. Définir sa propriété “Embed Interop Types” à “False” Ci-dessous le code de la classe “Program”: using Microsoft.Office.Interop.Outlook;   static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { MailItem mailItem =(Microsoft.Office.Interop.Outlook.MailItem) new Microsoft.Office.Interop.Outlook.ApplicationClass().CreateItem( Microsoft.Office.Interop.Outlook.OlItemType.olMailItem);... » read more

Chargement asynchrone des données avec busy indicator

1. Le chargement asynchrone : pourquoi faire ? 2. Solution proposée 3. Réalisation 3.1 MyViewModel.cs 3.2 MainWindow.cs Asynchronous WPF Application Source 1. Le chargement asynchrone : pourquoi faire ? Lorsque l’on crée une application il est souvent plus simple de charger les données de façon synchrone. Bien que plus rapide à mettre en place cette... » read more

ActiveDirectory : Vérifier si un utilisateur appartient à un groupe (C#)

1. On définit les paramètres de connexion dans notre app.config   <!-- Active Directory --> <!-- Active Directory --> 2. Nous créons ensuite la classe static ActiveDirectory en exposant la méthode IsUserMemberOfGroup public static class ActiveDirectory { /******************************************************************** * Shared properties * ********************************************************************/ private static DirectoryEntry ldap;   /******************************************************************** * Exposed methods * ********************************************************************/ public... » read more