API et DLL

Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Pour moi c'est du chinois !

Windows utilise de nombreuses DLL contenant des milliers de fonctions ou procédures. Beaucoup de ces fonctions, dites "fonctions de l'API Windows" (pour Applications Programming Interface), sont utilisables par les programmeurs pour leurs propres applications à condition de les déclarer correctement (notamment les paramètres et leur type).

En VB/VBA, la déclaration de ces fonctions doit commencer par le mot clé Declare. Le mot clé Lib (de Library, bibliothèque, je crois) indique dans quelle DLL se trouve la fonction utilisée. Dans l'exemple donné, la fonction GetSystemMetrics est incluse dans la bibliothèque user32.dll. Il existe un fichier texte (Win32Api.txt) qui liste les déclarations d'un grand nombre de fonctions de l'API de Windows. On peut en trouver le texte par exemple à cette adresse. Cette fonction est utile pour connaître les dimensions des objets manipulés sous Windows. Un paramètre Constante doit être envoyé pour récupérer le résultat en pixels.

Cette fonction fait partie des routines API. Ces routines sont utilisées chaque fois qu'un problème de programmation ne peut pas être résolu sous VB ou VBA ou lorsque la mise en oeuvre sous VB ou VBA s'avère trop compliquée. Les fonctions API sont elles-mêmes contenues dans des bibliothèques de fonctions d'extension DLL.

Windows lui même est d'ailleurs bâti sur une collection de DLL. L'extension d'une DLL est le plus souvent .dll mais Windows à introduit des exceptions à cette règle et des fichiers d'extension exe, drv ou ocx ne sont souvent que des bibliothèques DLL.

L'utilisation d'une routine API implique sa déclaration préalable par l'instruction obligatoire Declare qui indique l'appel à une procédure externe; de plus, le nom de la bibliothèque est indispensable car elle est chargée dynamiquement au moment de l'exécution et non statiquement au moment de la compilation.

Pour éviter d'avoir à déclarer chaque fois le chemin complet de la bibliothèque, ces dernières sont généralement enregistrées dans le répertoire system de Windows ou dans celui de l'application (d'où l'utilité du programme regserv32.exe).

Un exemple simple sur la fonction MsgBox permet de mieux comprendre; l'utilisation de MsgBox en VB ou VBA fait appel à une routine API dont toutes les déclarations nécessaires ont déjà été intégrées au langage de programmation, ce qui en simplifie l'utilisation pour l'utilisateur (seuls les paramètres de la fonction sont à renseigner). Tu peux voir des exemples de la routine API dans ce classeur à télécharger. Une DLL est un fichier "annexe" d'un programme qui contient des procédures ou fonctions "généralistes" (écrites une fois, utilisées de nombreuses fois dans le programme).

Auteurs : ,

Mots clefs associés à cette page : ,