Welcome to my blog

Here, I talk about my projects, .Net, and work.

27 Sep, 12

Créer une (très simple) application modulable en .Net


Ca faisait longtemps que je n’avais pas écris d’article technique sur le .Net. Je manque un peu d’idées car tous les sujets ont déjà été traités. Néanmoins, à la demande de certains de mes internautes sur le forum français de Veler Software, je publie cet article qui va vous expliquer le fonctionnement d’une application modulable en .Net.

Définition

Il me serait inutile de définir ce qu’est le .Net Framework, j’imagine que toutes les personnes s’intéressant à cet article savent ce que c’est. Alors plutôt, qu’est-ce qu’une application modulable? On peut traduire cette phrase par « un logiciel utilisant des plugins ». Un « plugin » est une bibliothèque (un fichier .dll) pouvant être aussi bien ajoutée que supprimée d’un logiciel, sans mettre en cause son dysfonctionnement (il est courant qu’un logiciel crash si on supprime une dll au hasard). Ce plugin a pour but principal d’ajouter de nouvelles fonctionnalités à ce fameux logiciel.
Une application modulable est donc un logiciel auquel on peut rajouter des fonctionnalités en ajoutant une simple dll, sans avoir pour autant besoin de signifier au logiciel que cette dll existe. En effet, le logiciel doit être capable de trouver cette dll, de la configurer (si nécessaire) et d’en exploiter toute ses capacités automatiquement, sans intervention humaine (j’entends par là, réinstallation du logiciel, modification de l’exécutable pour accepter la dll…)

Exemple d’applications modulable

Nombreux sont les logiciels pouvant recevoir des « modules », « plugins » :
– SoftwareZator (héhéhé)
– Firefox (et ses modules complémentaires)
– Google Chrome
– Internet Explorer
– Les logiciels Adobe (je parle de Photoshop et Dreamweaver surtout)
– Office
– Visual Studio
– Windows Live Messenger (et le fameux Messenger Plus)
– Et j’en passe des dizaines très connus

Read more
1 Juil, 12

Présentation de la barre de collage de ClipboardZanager 2


La seconde version de ClipboardZanager est en développement, après deux ans de service pour la toute première version. Les performances sont meilleurs, notamment au niveau de l’utilisation du CPU lorsque le logiciel est au repos ou travail en arrière-plan. Cette nouvelle version a également son lot de nouveautés, et nous verrons dans cet article la présentation de la barre de collage de ClipboardZanager.

Deux méthodes pour coller une donnée

Il ne fait aucun doute que certains utilisateurs apprécieront les nouveautés, et d’autres préféreront garder les anciennes fonctionnalités, tout en bénéficiant des nouvelles performances. C’est pourquoi ClipboardZanager 2 vous proposera de choisir entre le nouveau système de collage, et l’ancien, présent dans ClipboardZanager 1.0.

Vous aurez donc le choix entre le « Menu classique » et la « Barre de collage » :

Menu classique

Menu classique

 

Barre de collage

Barre de collage

Read more
1 Nov, 11

(Archive) SoftwareZator 1.0 (29 Mai 2009)


Bonjour à tous,

J’ai retrouvé par hasard dans les archives de Veler Software une vidéo de SoftwareZator 1.0 daté du 29 Mai 2009. Pour rappel, SoftwareZator 1.0 a été développé entre Février et Novembre 2009.

On y voit la création d’un nouveau projet avec une simple fenêtre, la création d’une fonction et le teste du projet. On peut remarquer d’ailleurs que dans cette vidéo, les fonctions ne sont pas encore représentés sous la forme d’onglets, mais d’un seul bloque. Remarquons également qu’il ne possédait que 8 actions (90 lors de la sortie du logiciel). Enfin, lors de la génération du projet, une simple barre de progression en bas à gauche de l’écran avance, il n’y avait pas le masque par dessus l’interface.

Sans plus tarder, la vidéo :

1 Jan, 11

Le développement parallèle avec SoftwareZator 2011


Tout d’abord, avant de commencer ce tutoriel, j’aimerais vous souhaiter une très bonne année 2011 et que tous vos vœux soient réalisés.

Aller, au boulot?
Avant de passer à la pratique, on va faire un petit peu de théorie.

Qu’est-ce que le développement parallèle?

Est-ce des boutons que l’on aligne parfaitement? Non. Est-ce plusieurs actions que l’on exécute au même moment? On se rapproche. Est-ce une fonction que l’on exécute en même temps qu’une autre? Oui.
Le développement parallèle est une façon de développé qui demeure aujourd’hui indispensable pour exécuter de gros calculs.

Pour être clair, le but du développement parallèle est d’exécuter une fonction dans un processus différent afin que le logiciel travail tout seul sans qu’il se fige. Ainsi votre logiciel pourra par exemple analyser tout le contenu d’un disque dur sans avoir à se demander si votre fenêtre va se figer ou pas.

Avantages :

– Gain en performance.
– Le processus s’exécute sur le deuxième processeur si l’ordinateur est équipé d’un CoreDuo.
– Le logiciel ne se fige pas durant l’exécution de la fonction.
– Très simple d’utilisation.

Désavantages :

– Gourmand en ressources.
– Accès restreint à l’interface de votre logiciel (nous verrons ça dans la pratique).

Utiliser le développement parallèle

Ça peut sembler un petit peu compliqué au début mais vous verrez qu’en réalité c’est très simple.
Le système de développement parallèle est basé sur un composant utilisable dans un concepteur de fenêtre. La fonction qui s’exécutera en parallèle sera donc lié à un évènement de ce composant.

Aller, on commence? Dans SoftwareZator 2011, ouvrez une fenêtre dans le concepteur de fenêtre. Rendez-vous dans la Boîte à outils, et ajoutez un composant BackgroundWorker, qui se situe dans la catégorie Composants, à votre fenêtre.
Celui-ci apparaîtra dans un encadré en bas de votre concepteur de fenêtre, car c’est un composant qui n’a pas d’interface visible à l’écran.

Propriétés

Propriétés

Une fois que votre BackgroundWorker est ajouté à votre concepteur de fenêtre, nous allons le configurer un petit peu. Pour cela, sélectionnez le BackgroundWorker que vous avez créé précédemment, puis passez dans le panneau Propriétés (par défaut, en bas à droite de la fenêtre de SoftwareZator).
Dans ce panneau, nous allons modifier deux propriétés :

– La première est WorkerReportsProgress. Elle permet d’indiquer qu’on autorise le BackgroundWorker à signaler la progression de la fonction. Mettez la valeur True (vrai).
– La seconde est WorkerSupportsCancellation. Cette propriété permet de déterminer si l’on peut demander à un BackgroundWorker de s’annuler (de s’arrêter) ou non. Mettez la valeur True (vrai).

Création d'une fonction

Création d'une fonction

A présent que notre composant est configuré, on va s’attaquer à la création des fonctions.
Toujours dans le concepteur de fenêtre, cliquez sur le bouton Lier ce contrôle à une fonction, situé dans le panneau latéral placé en bas du concepteur. Un assistant s’ouvre alors et vous demande de sélectionner d’un des évènements proposés pour continuer.

DoWork : la fonction lié à cet évènement est la fameuse fonction qui va s’exécuter en parallèle. C’est donc la fonction exécuté en « arrière-plan » qui ne figera plus votre fenêtre.
Note : dans cette fonction, toutes les actions permettant de manipuler l’interface de votre logiciel ne fonctionneront pas. Pour se faire, utilisez une fonction lié à l’évènement ProgressChanged.
ProgressChanged : cette fonction est exécuté lorsque vous décidez de faire changer la progression du BackgroundWorker. Cette fonction n’est pas exécuté en parallèle, c’est pourquoi elle vous donne la possibilité de modifier l’interface (tel qu’une Progressbar pour afficher la fameuse progression).
RunWorkerCompleted : cet évènement se déclenche lorsque la fonction lié à l’évènement DoWork a finit d’être exécuté.

Nous allons ici sélectionner l’évènement DoWork. Continuez l’assistant pour créer la fonction lié à cet évènement.

C’est bon c’est fait? Parfait ! Maintenant, comment utiliser notre BackgroundWorker? C’est simple au point que cela se résume en quatre actions seulement (toutes dans la catégorie BackgroundWorker, dans l’éditeur de fonctions) :

– Démarrer un BackgroundWorker.
– Progression d’un BackgroundWorker.
– Déterminer si un BackgroundWorker est en cours d’exécution.
– Arrêter un BackgroundWorker.

C’est bien beau mais comment on les utilise? J’allais justement y venir. 😉

Démarrer un BackgroundWorker : comme son nom l’indique, cette action permet de démarrer un BackgroundWorker. En outre elle permet de déclencher la fonction lié à l’évènement DoWork.
– Placez cette action dans une fonction qui s’exécute lors d’un clic sur un bouton par exemple. Ainsi lorsqu’on cliquera sur le fameux bouton, le BackgroundWorker s’exécutera.
Progression d’un BackgroundWorker : cette action permet de reporter la progression de votre BackgroundWorker. Elle déclenche donc l’évènement ProgressChanged du composant. Cette action vous propose également de préciser un pourcentage de progression et une variable dans laquelle il faut l’enregistrer (facultatif).
Note : vous pouvez utiliser cette action depuis la fonction lié à l’évènement DoWork, ou bien de toute autre fonction. Prenez soin de déterminer avant si le BackgroundWorker fonctionne via l’action Déterminer si un BackgroundWorker est en cours d’exécution, suivi d’une condition.
Déterminer si un BackgroundWorker est en cours d’exécution : permet de récupérer une valeur indiquant si le BackgroundWorker spécifié est en cours de fonctionnement ou pas. En outre, cette action détermine si la fonction lié à l’évènement DoWork est entrain d’être exécuté ou non.
– La valeur retourné est True (vrai) si le composant fonctionne, et False (faux) si il ne fonctionne pas (cette valeur n’est pas du texte).
Arrêter un BackgroundWorker : cette action permet de forcer à annuler/arrêter le fonctionnement du BackgroundWorker spécifié avant qu’il n’ai terminé son exécution.

Voila, ce tutoriel est terminé. Compliqué? Pas tant que ça.
Si vous désirez avoir quelques précisions sur certains points n’hésitez pas à me le demander en commentaire.

Et bonne année 2011 ! 🙂