Recherche sur le blog

vendredi 30 mai 2014

[WD19] Coloration syntaxique dans Notepad++

Si vous ne connaissez pas encore Notepad++, il est encore temps de le découvrir ! Il s’agit d’un éditeur de texte et de code sous licence GPL prenant en charge plusieurs langages afin d’offrir une coloration syntaxique. En plus de cela, il permet d’ouvrir plusieurs fichiers sous forme d’onglet, de mémoriser la session actuelle, de créer des macros,… Et si vous êtes sous Windows, vous constaterez qu’il est bien plus performant que le bloc-notes intégré au système. Pour le télécharger, rendez-vous sur le site officiel : notepad-plus-plus.org !

Bien sûr, il n’intègre pas la coloration syntaxique pour le WLangage, donc lorsqu’on copie du code depuis Windev, il est un peu difficile de s’y retrouver. Avec le plugin WLangLexer pour Notepad++, disponible sur le site WDScript.fr, on peut désormais afficher en couleurs les différents éléments du WLangage, comme on peut le constater avec l’image suivante.

wdcoloration 
Le 31 janvier 2014, l’auteur proposait une mise à jour pour prendre en charge les nouveautés de Windev 19 (v4.1.0.19-wd19030e.zip). L’archive est à décompresser dans le sous-répertoire “plugins” du dossier d’installation de Notepad++. Ensuite, il suffit simplement de relancer le logiciel et d’aller dans le menu “Langage” pour découvrir l’option “WLang”. Lorsqu’on copie du code, on obtient le même genre de résultat que sur l’image ci-dessus. Nous ne pouvons que féliciter le créateur de ce plugin, qui rendra bien des services à ceux qui aiment s’échanger du code sous forme de fichiers texte !

Édition du 27/11/2014

Le site WDScript n'étant plus accessible à ce jour, vous pouvez retrouver le plugin sur la page de l'auteur, Tanguy Pruvot. Vous retrouverez également ce téléchargement sur Mediafire puisque j'en ai profité pour héberger le fichier. Ça laisse tout de suite plus de chance de le retrouver !

mardi 27 mai 2014

[Astuces] Mémo - Restauration MBR Windows 7

Si vous obtenez un message du style “Reboot and select proper boot device”, vous pouvez tenter de restaurer le MBR (Master Boot Record). Pour cela, il faudra démarrer sur un CD/DVD ou sur une clé USB qui contient une image disque de l’outil de réparation système. 

Créer un DVD contenant l’utilitaire de réparation

Windows 7 contient un outil pour créer un CD de réparation système. Pour le lancer, effectuez les étapes suivantes ou exécutez directement la commande “recdisc” via la fenêtre Exécuter. Le tutorial complet est disponible sur le site de Microsoft : http://windows.microsoft.com/.../create-a-system-repair-disc.
  • Allez dans le menu “Démarrer”.
  • Ouvrez le “Panneau de configuration”.
  • Rendez-vous dans “Système”.
  • Dans la colonne à gauche, cliquez sur “Centre de maintenance”.
  • Dans la liste des tâches, choisissez “Créer un disque de réparation système”. Une nouvelle fenêtre s’ouvre alors.
Insérez un disque vierge dans le lecteur puis cliquez sur “Créer un disque”. Le processus de création est alors lancé ; il faudra attendre quelques minutes le temps que le disque soit gravé. Une fois l’opération terminée, un message s’affiche pour indiquer que le support a été correctement créé.
Vous pouvez ensuite passer directement aux étapes “Ordre de démarrage” et “Redémarrer et utiliser l’outil de réparation système”. Si cependant, vous souhaitez utiliser une clé USB car il est impossible pour vous de graver un CD, reportez-vous aux deux paragraphes qui suivent.

Obtenir l’image disque sur internet
   
Certaines personnes ont généré une image au format ISO sur base de ce disque afin de permettre aux utilisateurs de la graver depuis n’importe quelle machine : téléchargez la version 32 bits ou la 64 bits (fournies par Maximum PC Guides). Elle pourra également être copiée sur une clé USB “bootable”.

Mise à jour du 12/11/2015. Malheureusement ces images ne sont plus disponibles sur internet. Il faudra donc utiliser l'outil intégré à Windows 7 pour créer une clé USB ou un support DVD, ou bien chercher activement un torrent qui serait toujours actif.

Mise à jour 2. Et finalement c'est sur le site Malekal qu'on peut retrouver ces ISO en téléchargement, aussi bien pour la version 32 bits que 64 bits. Les liens sont proposés dans un article qui détaille la procédure complète (voir sources), pour Vista et Windows 7. Voici les liens de téléchargement directs : Image x86 | Image x64.
     
Créer une clé USB dite “bootable
   
Si vous ne pouvez pas créer de CD ou si la machine qui doit être réparée ne possède pas de lecteur optique, alors il va falloir créer une clé USB dite “bootable” (il sera possible de démarrer dessus comme on le ferait avec un CD). Plusieurs outils permettent de créer et copier la structure de fichiers nécessaire afin que le support soit correctement reconnu lors du démarrage.
   
Parmi tous les logiciels que nous avons essayé, le plus simple à utiliser reste encore “ISO to USB”. Il s’agit d’un freeware que l’on peut télécharger sur le site du même nom. Ce logiciel est sûr : il n’y a pas de publicité intégrée à l’installateur.
  • Une fois installé, branchez votre clé USB.
  • Lancez ISO to USB.
  • Dans la fenêtre qui s’ouvre, cliquez sur “browse” pour rechercher l’image disque précédemment télécharger puis cliquez sur “Ouvrir”.
isotousb
  • Sous le libellé “USB drive”, choisissez le bon lecteur dans la liste.
  • Choisissez le système de fichier (ici, FAT32 suffit).
  • Le label du volume est déterminé par le nom de l’ISO.
  • Cochez la case “Bootable”.
  • Cliquez sur “Burn”.
  • Patientez le temps de la création.
La clé est alors créée et il est désormais possible de démarrer sur celle-ci. Il faut maintenant configurer le BIOS de l’ordinateur qui pose problème afin qu’il essaie de démarrer sur ce périphérique.
    
Ordre de démarrage
    
Branchez tout d’abord le périphérique amovible (c’est-à-dire la clé) à l’ordinateur. Dans le BIOS de l’ordinateur, il faudra redéfinir l’ordre de démarrage et sélectionner le bon périphérique. Plusieurs tutoriels expliquent comment procéder : cela peut varier d’un BIOS à l’autre car les options n’ont pas toujours le même libellé ou ne sont pas toujours situées dans la même catégorie. Ci-dessous, un exemple d’interface :
    
Secure_BIOS_Boot_Order_w800

Voici une liste de liens intéressants pour réaliser cette opération :
     
Redémarrer le PC et utiliser l’outil de réparation système
     
Vous pouvez maintenant redémarrer afin que l’outil de réparation système démarre. Si cela ne fonctionne pas, soit votre PC n’est pas capable de démarrer sur une clé USB, soit vous n’avez pas définir correctement la séquence de démarrage. La procédure suivante a été adaptée sur base du dossier que l’on retrouve sur le site web Seven Forums.
  • Lorsque l’outil est lancé, choisissez la langue du clavier.
  • Choisissez l’option “Use recovery tools that can help fix” (il s’agit de la première option). Il est possible que l’utilitaire ne trouve aucun système installé sur la machine, ce n’est pas grave.
  • Dans les outils proposés, choisissez “Command Prompt” (en français, il s’agit de l’invite de commandes).
  • Saisissez la commande suivante : bootsect /nt60 SYS /mbr.
  • Un message d’information doit s’afficher et doit indiquer que l’opération s’est déroulée avec succès. Le message indique également sur quel disque le MBR a été restauré.
  • Retirez la clé USB, et cliquez sur “Restart” (redémarrer).
  • Modifiez la séquence de démarrage dans le BIOS et sélectionnez à nouveau le disque sur lequel Windows est installé.
  • Effectuez un essai pour voir si Windows démarre correctement.
   
Sources 

Malekal

lundi 26 mai 2014

[Vidéos] Des enfants utilisent un vieil ordinateur

Deux frères – The Fine Brothers - ont lancé sur Youtube un concept de vidéos dans lesquelles ils filment les réactions d’enfants notamment lorsqu’on leur demande d’utiliser un vieil ordinateur des années 80.

Les réactions sont plutôt amusantes ! On peut trouver d’autres vidéos sur la chaine Youtube.

mardi 13 mai 2014

[WD19] Utiliser l’API Exchange Web Services

Plutôt que d’utiliser les fonctions natives pour l’accès à Exchange, nous avons essayé d’accéder à un compte e-mail par l’intermédiaire de l’API “Exchange Web Services” version 2.0. Les bibliothèques sont proposées par Microsoft et peuvent être téléchargées sur le site web. Dans cet article, nous verrons comment nous connecter à Exchange, comment récupérer dix éléments de la boite de réception, et comment enregistrer une pièce jointe sur le disque dur, dans un répertoire temporaire. Les documentations MSDN et PC SOFT, ainsi que les différents sujets retrouvés sur de nombreux forums, ont permis d’aboutir à un résultat intéressant.

Télécharger les bibliothèques

Cette API est fournie par Microsoft et peut être téléchargée via le lien suivant : http://www.microsoft.com/e...s.aspx?id=35371. Le site vous proposera de télécharger le fichier adéquat en fonction de la version du système d’exploitation que vous utilisez (32 ou 64 bits).

Une fois l’API installée sur votre machine, deux bibliothèques DLL sont disponibles dans le dossier suivant : %ProgramFiles%\Microsoft\Exchange\Web Services\2.0. Ces assemblys pourront être importés dans le projet Windev de votre choix. Les deux fichiers “.dll” devront également être copiés ou installés sur la machine cliente.

Utiliser les assemblages

Dans votre projet Windev, ouvrez l’explorateur de projets, puis descendez jusqu’à l’arborescence “Assemblages .NET”. Effectuez ensuite un clic droit sur le titre de la catégorie, puis choisissez l’option “Utiliser un assemblage (…)”. Une nouvelle fenêtre s’ouvre alors.

WD_Assemblages_NET

Cliquez sur “Parcourir” puis sélectionnez “Microsoft.Exchange.WebServices.Auth” et “Microsoft.Exchange.WebServices” depuis le répertoire d’installation de l’API. Cliquez sur OK : l’arborescence est mise à jour et on voit alors apparaitre l’ensemble des objets qui peuvent être utilisés. On retrouve toutes les classes, tous les membres et les méthodes de celles-ci.

Se connecter à Exchange

A l’aide de l’outil de connectivité, on peut éventuellement s’assurer que l’accès est autorisé et que le service “autodiscover” est activé. Si ce n’est pas le cas, il est possible que vous rencontriez l’une ou l’autre erreur de connexion. Cela peut se traduire par des exceptions.

WD_Code_Connexion

Voyons quelles sont les étapes à réaliser :

  • La première chose que l’on doit faire est d’instancier un objet de type “ExchangeService”. Le paramètre du constructeur devra être l’une des constantes qui indique la version utilisée (ex : 2010 SP1).
  • Ensuite, pour se connecter, on va instancier un objet de type “WebCredentials” et le lier au service. Cet objet est utilisé pour les authentifications basées sur les mots de passe, comme NTLM ou Kerberos. Les trois paramètres du constructeur sont donc le nom d’utilisateur, le mot de passe et le domaine.
  • Enfin, il faut récupérer et valider l’URL du service “autodiscover”. La validation sera réalisée par l’intermédiaire d’un délégué. En Windev, il faut donc alors créer la procédure correspondante (“validateRedirectionUrl” dans notre exemple) qui possède un seul paramètre de type “chaine”.

Une fois que toutes ces opérations sont réalisées, si aucune exception n’a été déclenchée, c’est que la connexion a bien été effectuée. Dans ce cas, on peut essayer de récupérer le contenu de la boite de réception.

Analyse des éléments de la boite de réception

Nous allons maintenant récupérer dix objets de la boite de réception et afficher le sujet de chacun d’eux dans une fenêtre de trace de Windev. Pour commencer, il faudra déclarer une instance d’un objet de type “Folder”.

WD_Code_Inbox

Voyons quelles sont les étapes à réaliser :

  • Nous allons accéder au dossier en le liant au service par l’intermédiaire de la fonction “Bind” de la classe “Folder”. Pour éviter les erreurs liées aux types, nous créons les objets en deux temps.
  • Nous allons ensuite instancier un objet “FindResults” qui représente le résultat d’une recherche (fonction “FindItems”). Dans notre cas, nous souhaitons récupérer 10 éléments dans la boite de réception.

Notre instance de l’objet “FindResults” contient un membre qui se nomme “Items” et qui est du type “IEnumerable”, de ce fait il sera possible d’effectuer une boucle “POUR TOUT” (il s’agit en fait de l’équivalent du “foreach” en C#).

Lecture du sujet du mail

Dans la fameuse boucle que nous créons, nous allons faire en sorte de récupérer le contenu du sujet afin de l’afficher. Il faut donc charger l’e-mail en spécifiant son identifiant. On va aussi prévoir de charger l’ensemble des pièces jointes en le spécifiant clairement par l’intermédiaire d’une propriété, comme l’explique la documentation Microsoft.

WD_Code_Analyze

Voyons quelles sont les étapes à réaliser :

  • Avant la boucle, nous créons une variable de type “EmailMessage” en utilisant le constructeur qui prend en paramètre l’objet “ExchangeService”, que l’on a initialisé plus haut. Pour éviter les problèmes éventuels de conversion, nous avons réalisé les étapes en bouts de code séparés.
  • Dans la boucle, nous devons déclarer une collection de type “PropertyDefinitionBase” dans laquelle on stockera la constante “ItemSchema.Attachments”. Nous avons tenté d’écrire l’appel à la fonction “Bind” comme dans la documentation mais cela a généré une erreur de conversion.
  • Enfin, avec la fonction “Trace” ou “Info” (fonction Windev), nous pouvons afficher le sujet.

trace

Dans la trace précédente, nous avons également ajouté un petit compteur, juste dans un but de debugging. Le contenu des sujets mentionnés ci-dessus a été masqué pour une question de confidentialité.

Récupération d’une pièce jointe texte ou compressée

Dans notre e-mail, supposons qu’il existe une pièce jointe de type texte ou bien même une archive ZIP. Pour récupérer le fichier, nous avons dû adapter la proposition de la documentation MSDN pour que le code soit fonctionnel. Après plusieurs essais et quelques recherches sur la toile, nous avons enfin trouvé la méthode pour pouvoir récupérer le fichier et l’enregistrer dans un répertoire.

Dans la boucle où nous affichons le sujet de l’e-mail, nous avons effectué une seconde boucle pour analyser chaque pièce jointe. Certaines limitations nous empêchant d’effectuer des conversions, nous avons dû adapter l’une ou l’autre partie pour distinguer les fichiers des autres pièces jointes.

WD_Code_Attachment

Voyons quelles sont les étapes à réaliser :

  • Tout d’abord, nous allons déclarer un objet dynamique de type “FileAttachment”, si et seulement si nous retrouvons l’extension “.txt” ou “.zip” dans le nom. Si ce n’est pas le cas, nous ne traitons pas la pièce jointe. Bien sûr il aurait été préférable de comparer les types !
  • Ensuite, nous stockons l’objet issu de la boucle dans cet objet dynamique. Il ne nous reste plus qu’à le charger dans un fichier du même nom et ce dans le répertoire de notre choix (ici il est renseigné en “dur”).
  • Il ne faut bien sûr pas oublier de détruire les objets dynamiques qui ont été alloués (ce qui permet de libérer la mémoire utilisée par ceux-ci). Cela se fait grâce au mot-clé “libérer” du WLangage.

Le fichier sera alors automatiquement enregistré dans le répertoire indiqué, avec le nom qui a été attribué à la pièce jointe. Après il ne nous restera plus qu’à utiliser l’une ou l’autre fonction Windev pour effectuer le traitement de notre choix.

Interagir avec les e-mails

Sachez qu’il est également possible d’effectuer d’autres opérations, comme déplacer un message dans un autre dossier, voire le supprimer définitivement. Pour cela nous vous invitons à regarder de plus près la documentation MSDN qui est plutôt bien fournie.