Accueil
 COURS INFORMATIQUE
 Cours Algorithmique
 Cours ASP
 Cours CSS
 Cours HTML
 Cours PHP / MySQL
 Cours Réseaux
 Cours SQL
 Cours Visual Basic
 ARTICLES
  Conception de sites
  Droit & Internet
  e-commerce
  Société
  Strategies du web
  Technologies Web
  Marketing Web
 LIVRES
  ASP/ASP.Net
  C/C++/C#
  Conception de sites
  DHTML/CSS
  Gestion de Projet
  HTML/Internet
  Java/JSP/J2EE
  JavaScript/VbScript
  Juridique
  Marketing/Stratégie
  PHP/Linux/Unix
  Réseaux
  XML/XHTML/XSL
 NETALYA RECOMMANDE
Reussir un projet de site web

Cours Visual Basic N°7
DLL, API… SOS

Auteur : Christophe Darmangeat Imprimer ce cours

Gare à la casse et sus à la migraine ! Dans cette rapide présentation, on va voir quelques (je dis bien quelques) éléments permettant d’aller plus loin avec VB. En fait, on va voir comment VB peut (mais ce n’est pas obligé) utiliser des éléments de Windows pour améliorer ses (vos) performances. Mais là, inutile de préciser qu’entrant de plain-pied dans le domaine ésotérique de l’architecture de Windows, on n’est pas au bout de nos peines.

Un exemple : les boîtes de dialogue communes

Vous avez déjà remarqué que dans Windows, certaines boîtes de dialogue ont une tête standard : Fichier – Ouvrir, Fichier – Imprimer, et quelques autres. C’est que ces boîtes sont en quelques sorte préprogrammées, et que n’importe quel programmeur (dont vous-mêmes, public adoré), au lieu de se fader de les reproduire avec plus ou moins de bonheur, peut se contenter d’y faire appel.

Le principe de fond, sur lequel je reviendrai dans instant, est qu’un contrôle particulier est mis à votre disposition, du joli nom de Comdlg32.ocx. Ce contrôle permet d’utiliser la DLL correspondante (comdlg32.dll), c’est-à-dire du code déjà écrit. Au passage, notons qu’il existe des moyens d’utiliser des DLL même lorsqu’on ne vous donne pas le contrôle adéquat. Mais là, c’est une autre paire de manivelles qu’on abordera très, mais alors très bientôt.

Pour en revenir aux boîtes de dialogue dites " communes ", il faut commencer par charger le contrôle comdlg32.ocx, car ce contrôle, par défaut, ne vous est pas proposé. Il faut passer par Projet – Composants, et le choisir dans la liste.

Ensuite, l’astuce, c’est qu’avec ce seul contrôle, on peut ouvrir 6 boîtes de dialogues différentes. Il suffit d’appliquer à ce contrôle la méthode appropriée :

Boîte de dialogue voulue Méthode à utiliser
Fichier Ouvrir ShowOpen
Fichier Enregistrer ShowSave
Couleur ShowColor
Police ShowFont
Imprimer ShowPrinter
Aide ShowHelp

Avant de lancer cette méthode pour ouvrir la boîte de dialogue, il faut ajuster les propriétés du contrôle, afin de préciser éventuellement des filtres (pour Fichier Ouvrir), un Titre pour votre boîte, etc. De même, la réponse de l’utilisateur sera stockée, comme d’habitude, dans certaines propriétés du contrôle. On a ainsi :

FileName : récupère le nom complet (avec chemin) du fichier sélectionné par l’utilisateur
FileTitle : récupère le nom du fichier sélectionné par l’utilisateur sans le chemin
Filter : définit le(s) type(s) de fichiers proposés par votre boîte de dialogue
FilterIndex : Définit lequel des filtres doit être utilisé
InitDir : Fixe le répertoire initial
DialogTitle : Titre de la boîte de dialogue
CancelError : Si True, le bouton Annuler provoquera une erreur.

Ces propriétés s’appliquent pour la boîte de dialogue Ouvrir. Pour les propriétés des autres boîtes de dialogue communes, cf. les bouquins ou l’Aide.

Voilà, c’était l’exemple le plus courant d’utilisation d’une DLL. Passons maintenant au cas général. Youpi.

Les DLL

Vous savez sans doute (ne serait-ce que pour avoir vu la tête d’Hervé quand vous en avez supprimé par mégarde) que les DLL jouent un rôle capital dans Windows. Mais que se cache-t-il derrière cet acronyme byzantin ? Eh bien, ce sont des " bibliothèques de liens dynamiques ", autrement dit des Dynamic Link Libraries. Ces DLL contiennent du code compilé (donc illisible) exécutant telles ou telles fonctions dans Windows.

Par exemple, Comdlg32.dll est une DLL qui contient le code nécessaire à l’exécution de boîtes de dialogue communes (d’où son Titre) aux applications Windows qui veulent s’en servir : Fichier – Ouvrir, Fichier – Enregistrer, et quelques autres. Mais peut-être le saviez-vous déjà ?

Donc, lorsque Word ou Excel vous proposent ces boîtes de dialogue, il faut comprendre que les lignes de code correspondantes ne font pas à proprement partie de Word ou Excel. Ces lignes de code sont stockées (une seule fois, donc) dans cette DLL. Word et Excel, eux, se contentent d’appeler la DLL, autrement dit le code qu’elle contient..

Il en va de même pour toutes les DLL, qui sont donc des morceaux de programme utilisables par d’autres programmes. Cela signifie que lorsque vous écrivez du VB, vous n’êtes pas obligé de réinventer à chaque fois l’eau tiède, la poudre à maquiller et le fil à couper le roquefort. Si une DLL contient déjà le code qui fait ce que vous souhaitez, vous pouvez (c’est même recommandé) appeler cette DLL plutôt que réécrire – généralement, moins bien – le code en question en VB.

Avec VB, vous pouvez donc :

  • utiliser du code déjà présent dans Windows via une DLL
  • créer de surcroît vos propres DLL (mais, là, attention les yeux)

On se contentera du premier tiret (quoique le second ne soit pas si inabordable que cela).

Alors, au fait, pourquoi " lien dynamique " ? C’est une question d’architecture. Un langage qui fonctionne avec des liens statiques incorpore à l’exécutable absolument tous les éléments de code dont il a besoin (cf. ce qu’on a dit pour le chargement des fichiers dans un contrôle image). Avantage, l’exécutable est autonome, et portable tel quel sur n’importe quel machine. Inconvénient, l’exécutable en question a tendance a être gros. L’avantage des langages et des systèmes fonctionnant avec des liens dynamiques, c’est que le code souvent utilisé est en quelque sorte partagé entre tous les exécutables qui en ont besoin à un moment où à un autre.

Avantage : s’il y a plein d’exécutables, on finit par y gagner en place occupée sur l’ordinateur.

Inconvénient, l’exécutable généré par un tel langage ne fonctionnera que s’il trouve présentes sur la machine toutes les DLL dont il a besoin. C’est précisément un des aspects cruciaux dont s’occupe l’assistant d’installation.

En fait, avec cette histoire de DLL, on retrouve peu ou prou à un autre niveau la division entre " logiciel d’application " et " système d’exploitation " qui existe depuis si longtemps en informatique. Mais là, la zones d’influence du " système d’exploitation ", disons plutôt de Windows, dépasse largement la gestion du disque dur et de l’écran. Les DLL contiennent du code gérant (liste non exhaustive) : l’interface graphique, les capacités multimédia…

L’API Windows

Aïe, Aïe, Aïe, que se cache-t-il derrière cette jolie pomme rouge ? Comme vous vous en doutez, ze worm is in ze frout.

API signifie : Application Programming Interface. C’est en fait un habillage de toutes les fonctions disponibles au sein des DLL. Donc, neuf fois sur dix, en VB, plutôt qu’attaquer directement les DLL (bon courage !) vous attaquerez l’API qui se chargera, elle, d’en dire deux mots aux DLL concernées. Cela dit, bon courage quand même.

En fait, l’API, tels Monsieur Jourdain et sa prose, vous vous en êtes servis tout ce semestre sans le savoir. Les jolis contrôles graphiques que vous avez utilisés (listes, boutons, etc.) sont des morceaux d’API, accessibles dans VB sous forme d’objets tout dessinés, avec leurs méthodes et leurs propriétés. Jusque là, donc, tout baigne. Le problème, c’est qu’il existe un certain nombre de fonctions de l’API qui ne sont pas a priori couvertes par des contrôles VB. C’est là, au moment où vous voudrez utiliser cette partie " cachée " de l’API, qu’on commence à rigoler pour de bon.

Première bonne blague : à part d’épais et indigestes bouquins (en plus, ils sont chers), il n’existe nulle part une liste des fonctions d’appel de l’API, vous disant quelle fonction fait quoi, et la syntaxe de l’appel. Résultat, il faut chercher, chercher, et chercher encore, crier au secours sur Internet, pour savoir quel appel API utiliser pour une tâche donnée, et en connaître la syntaxe. J’ai vu pas plus tard que l’an dernier un étudiant passer plusieurs heures à chercher comment, par un code VB, lancer Access avec une base de données précise chargée à l’ouverture… C’est pas sorcier, me direz-vous ? Pourtant, il n’a trouvé que juste avant de mourir d’épuisement.

Mais jetons un voile pudique sur les affres de la recherche, et imaginons que vous ayez enfin trouvé la syntaxe de l’appel API de vos rêves les plus fous. Comment le mettre en œuvre dans votre jolie application ?

En ce qui concerne la syntaxe, un appel API ne se distingue pas fondamentalement d’un appel à une procédure ou une fonction ordinaire, avec des paramètres.

Pour pouvoir utiliser de l’API (autrement dit une DLL), il faut tout d’abord déclarer la fonction en question, en indiquant les éléments suivants :

  • le nom de la procédure ou fonction
  • le fichier DLL où elle se trouve
  • les paramètres qu’il doit recevoir
  • le type de valeurs renvoyé, s’il s’agit d’une fonction

Tout cela, encore une fois, vous ne l’inventez pas. Il vous faut tous ces renseignements pour pouvoir travailler, renseignements recueillis dans un bouquin, sur le Net, ou auprès d’un ami si vous avez de mauvaises fréquentations.

Au total, la déclaration donnera un zorglub du genre :

Private Declare Function Duchemol Lib "Coucou32" Alias "Zigopaf" (Byval x As Long, Byval y As Long) As Long

  • Declare indique qu'il s'agit d'une déclaration API
  • Duchemol est le nom que vous choisissez pour votre fonction
  • Lib indique qu'il va falloir aller piocher dans une DLL…
  • …DLL dont le nom est "Coucou32"
  • Alias est un paramètre éventuel, souvent omis par VB car le nom d'alias est le même que le nom de la DLL
  • X et Y sont les paramètres envoyés à la fonction, avec leur type
  • Le As Long final indique le type de valeur retournée par la fonction.
  • Ouf.

Une fois cette fonction d’appel API déclarée, vous pourrez vous en servir comme de n’importe quelle fonction, avec par exemple en cours de programme :

Toto = Duchemol(45, 156)

Et voilà. C’était simple, non ?

L’assistant d’installation

Pour terminer ce chapitre sur une note plus gaie, je vous signale l’existence d’un assistant d’installation. Kesako ?

Eh bien, toute application VB, même une fois compilée, a besoin d’un certain nombre de fichiers pour pouvoir être exécutée sur une machine quelconque. En premier lieu, les fichiers DLL de VB5, que votre code VB compilé attaque à qui mieux mieux. Si ces DLL sont absentes de la machine d’arrivée, votre code tournera dans le vide (une minuscule fraction de seconde) et se plantera avec un long ululement d’agonie. Terrifiant spectacle.

Donc, plutôt qu’avoir à vous fader à la main de transférer les DLL concernées (quelles sont-elles, après tout ?) plus tous les autres fichiers dont votre exécutable risque d’avoir besoin (par exemple, des fichiers image ou des fichiers texte), vous avez ce petit outil.

Il va balayer votre application et noter soigneusement tous les fichiers dont elle aura besoin pour tourner, puis empaqueter tout cela dans un seul et même fichier auto-extractible.

Vous n’avez plus qu’à trimballer ce fichier final, et l’installation, sur n’importe quelle machine, y posera tout ce qui est nécessaire à votre application pour tourner.

Géniââââl, non ?

Nous vous informons que ce cours constitue une œuvre protégée en France par le Code de la Propriété Intellectuelle, et à l’étranger par les conventions internationales en vigueur sur le droit d’auteur. La violation de l’un des droits d’auteur de l’œuvre est un délit de contrefaçon. Il est donc interdit, à titre privé ou public, de reproduire, copier, vendre, revendre ou exploiter, que ce soit dans un but commercial ou purement gratuit, ce cours, sauf accord exprès et préalable de son auteur.


Google
 
 RESSOURCES GRATUITES
 Caractères spéciaux
 Code Couleurs HTML
 Générateur Méta Tags
 Références HTML
 Scripts : ASP
 Scripts : Java Scripts
 PRATIQUE / OUTILS
 Salons Informatiques
 Astuces Windows
 TÉLÉCHARGEMENTS
 Utilitaires système
 Logiciels pratiques
 Jeux & démos
 INFOS SITE
 Contacts
 Mentions légales
 Qui sommes-nous ?
 PARTENAIRES
 Jeux et Jouets
 Murielle Cahen
 Cours d'anglais
 Droit NTIC
 Directeur Internet
 Australie
 Création site Internet
 VOD News
 Web Hostings