Derou a écrit :je ne comprend pas bien comment fonctionnent les DLLs.
Pour plus de détails sur les dll, allez faire un tour
ici, ce sera un bon début.
En ce qui concerne l'utilisation d'une DLL, le but est d'y faire appel soit à la volée
DllCall ( "Madll.dll", ... mais dans ce cas la DLL est chargée puis déchargée (ce qui lors de multiples appel à celle-ci n'est pas trop recommandé).
Sinon comme vous le citez, le plus simple est d'ouvrir un handle d'appel à cette DLL (on charge la DLL et on la garde chargée tant qu'on en à besoin).
Ensuite et ensuite seulement vous pouvez faire appel à une des fonctions de celle-ci.
En l'occurrence, pour l'UDF FTP.au3 dans la fonction
_FTPOpen :
Code : Tout sélectionner
Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)
Local $ai_InternetOpen = DllCall('wininet.dll', 'hwnd', '[b]InternetOpen[/b]', 'str', $s_Agent, 'long', $l_AccessType, _
'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
If @error OR $ai_InternetOpen[0] = 0 Then
SetError(1)
Return 0
EndIf
Return $ai_InternetOpen[0]
EndFunc ;==> _FTPOpen()
Ici la DLL wininet est ouverte à la volée pour pouvoir utiliser la fonction
InternetOpen qu'elle contient.
L'appel à une DLL, répond à des critères bien précis. Il vous faut impérativement la documentation de celle-ci pour savoir quel sont les valeurs d'entrée et de sortie.
Si vous omettez ou si vous vous trompez sur le type de valeur à passer à la DLL en argument, celle-ci vous renverra inévitablement une erreur.