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

Générer des images avec du texte

Cet article vous permettra d’utiliser simplement la font de votre choix dans une image. En effet les fonts dites “exotiques” sont rarement installées chez le visiteur de votre site. Dans certains cas (pour un titre par exemple) il est possible de générer une image contenant le texte voulu évitant ainsi les problèmes de rendu. L’archive... » read more

Tips Infragistics

Infragistics est un ensemble de composants graphiques .NET (http://www.infragistics.com/). Intégré à Visual Studio, il permet notamment de moderniser les applications Asp, Win form, Wpf, … WPF XamDataGrid 1. Comment cacher une colonne ? this.myXamDataGrid.Records.FieldLayout.Fields["ColonneACacher"].Visibility = Visibility.Collapsed;this.myXamDataGrid.Records.FieldLayout.Fields["ColonneACacher"].Visibility = Visibility.Collapsed; On utilise ici la propriété Collapsed et non pas Hidden car cette dernière laisse une marge à la place de la... » read more