jmfmarques
Messages postés
7666
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
27
6 nov. 2008 à 08:33
Rebonjour, Galactus,
Tu sais....
- il va t'être assez difficile de te lancer dans un langage de développement sans un minimum de connaissance de l'anglais.
- le site objet du lien que je t'ai donné est assorti d'exemplesn qui sont principalement des lignes de code (et le code étant le code, ma foi, il est le même en français et en anglais... !...)
Mais je viens de relire ton premier message. Il pourra alors t'être utile de lire ce texte, que j'avais rédifé à une certaine époque en françaisn puis d'aller voir quelques codes (exemples) sur le site de AllApi.
Texte jmfien, donc :
L'appel de l'API est fondamentalement semblable à l'appel d'une fonction ordinaire, aves ses paramètres.
Nous appelons en réalité une fonction d'une librairie (DLL).
Il nous faut déclarer la fonction dont il s'agit et, pour ce faire, préciser les éléments suivants :
- Le nom de la fonction ou de la procédure contenue dans la Dll et que nous voulons utiliser.
- le nom de la librairie (DLL) dans laquelle se trouve cette fonction ou procédure
- les paramètres qui doivent être passés à la fonction ou procédure
- le type de la valeur qui sera renvoyée par la fonction ou procédure.
Examinons par exemple la déclaration de la fonction FindNextFile de la bibliothèque Kernel32.dll :
Cette fonction attend un paramètre hFindFile, de type long, un paramètre lpFindFileData correspondant à une structure WIN32_FIND_DATA et retourne un Long....
La syntaxe de sa déclaration est donc la suivante :
Declare Function FindNextFile Lib "Kernel322" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
ou encore, en utilisant un Alias (voir plus bas) :
Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
Encore faudra-t-il définir la structure, ainsi, par exemple en ce qui concerne WIN32_FIND_DATA :
Private Type WIN32_FIND_DATA
dwFileAttributes As Long
ftCreationTime As FILETIME
ftLastAccessTime As FILETIME
ftLastWriteTime As FILETIME
nFileSizeHigh As Long
nFileSizeLow As Long
dwReserved0 As Long
dwReserved1 As Long
cFileName As String * MAX_PATH
cAlternate As String * 14
End Type
et, du coup : faire au besoin des déclarations de constantes (ici par exemple la constante MAX_PATH) pour les membres de cette structure, voire, comme c'est le cas pour celle-ci, définir d'autres structures correspondant elle
s-mêmes à un élément de la structure principale (ici, par exemple : une structure FILETIME)
Il est évident que tous ces renseignements sont donc nécessaires. Ils peuvent être obtenus ici et là (sur le Net, dans des ouvrages spécialisés, etc....) et... ici-même, je l'espère, pour un grand nombre des fonctions et procédures les plus utilisées...)
UTILISATION D'ALIAS
Il est possible d'appeler une fonction en utilisant un pseudo (plutot que son nom réel).
Ce pseudo doit alors être déclaré conjointement au nom réel de la façon suivante :
Imaginons vouloir déclarer et appeler sous le nom Titi une fonction Toto de la librairie Machin.dll
Déclare function
Titi
lib "Machin"
Alias "Toto"
(byval.....) as ....
L'utilisation d'un alias peut avoir plusieurs raisons, parmi lesquelles les suivantes :
- raisons de lisibilité : un mot plus "parlant" peut souvent faciliter la maintenance d'une application.
- éviter une ambiguïté : certaines fonctions comportent des
caractères qui pourraient être interprêtés différemment par VB (cas
par exemple du caractère "_" qui, sous VB, a une signification particulière !)
Imaginons par exemple que nous ayons à déclarer
(et utiliser) la fonction _lOpen de la librairie Kernel32
Si nous la déclarions ainsi :
Declare Function _lopen Lib "kernel32" (ByVal _
lpPathname As String, ByVal ireadWrite As Long) As Long
VB lirait bien évidemment :
Declare Function lopen Lib "kernel32" (ByVal _
lpPathname As String, ByVal ireadWrite As Long) As Long
ce qui provoquerait une erreur !
Voilàn ami ! ce texte plus les exemple du site + un bon retroussage de manche + beaucoup d'attention et ça devrait aller moins mal.
Bonne chance