mimosa803
Messages postés345Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 avril 2010
-
5 juin 2007 à 21:59
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 2014
-
5 juin 2007 à 22:56
salut tous le monde j'ai des fichiers dll fournie avec une appareil est ce que je peux utliser les fonctions fournie avec ces fichiers car il ya un guide qui mentionne que tous les fonctions existe dans les fichiers (Les fonctions sont détaillées avec les type de paramètres).
Si oui comment faire?
merci
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 22:39
"donc je commence d'appeler la librairie DLL
"
Mais ce n'est pas vrai !
Tu commences alors par relire ce que j'ai écrit juste avant !!!
Puis tu fais ce que je t'ai dit ( ouvrir ton aide en ligne - MSDN - sur le mot DECLARE).
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 5 juin 2007 à 22:40
Et donc à partir de la doc sur chacune des fonctions, il va te falloir écrire, pour les fonctions qui te seront utile, leur déclaration dans le code du style :
Declare Function NomDeLaFonction Lib "NomDeLaDll" (NomParam1 As TypeDuParam1, .....) As TypeDeLaValeurDeRetour
Ensuite tu utilisera tes fonctions comme de simples fonctions.
Pas besoin d'appel de la librairie, elle sera automatiquement appelée lorsque tu utilisera les fonctions ainsi déclarées
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 22:07
Salut,
En lisant avec attention la documentation (précisément) qui accompagne ton matériel et qui doit en principe exposer les fonctions que contiennent ces librairies , leurs paramètres d'entrée, les valeurs retournées et la facpn de les utiliser.
mimosa803
Messages postés345Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 avril 2010 5 juin 2007 à 22:17
oui c'est la fameuse pointeuse ...lol bon est ce que a partir de vb je pe lancer ces fonctions car dans la documentation il ya uniquement les commentaires sur les fonctions,leurs paramètres et le type de retour
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 22:23
Bien entendu que tu peux les utiliser, en :
- les déclarant
- les appelant en leur passant les paramètres qu'elles attendent en entrée
- récupérant et exploitant la valeur retournée
Le tout nécessite toutefois (et celà ne se "devine" pas) que tu te sois documentée sur les paramètres attendus et les valeurs retournées (tout celà est forcémùent exposé dans la documentation accompagnant ton matériel)
mimosa803
Messages postés345Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 avril 2010 5 juin 2007 à 22:26
daccord mais comment? est ce que c'est faisable d'appeler des fichiers dll et comment vb va connaitre des fonctions extérieurs ?
Svp si vous avez une idée sur l'utilisation des dll dites ,vraiment je suis bloqué
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 22:32
mimosa :
on n'appelle pas des fichiers .dll !! (ce sont des librairies contenant des fonctions)
on déclare les fonctions (contenues dans ces librairies) que l'on souhaite utiliser
on appelle ensuite les fonctions que l'on utilise (pas la librairie qui les contient !) en leur passant (une fois de plus) les paramètres qu'elles attendent. Cet appel retourne une valeur, et c'est cette valeur qui doit être utilisée ...
Commence par ouvrir ton aide en ligne sur le mot Declare (instruction = Statement en anglais) , donc... C'est là une étape indispensable et totalement incontournable.
mimosa803
Messages postés345Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 avril 2010 5 juin 2007 à 22:36
donc je commence d'appeler la librairie DLL puis j'appelle les fonctions en donnant des paramètres c'est ca (pour l'appelle d'un fichier j'utlise la notion du fichier sous vb) mais pour l'appelle d'une fonction je ne sai pa comment
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 22:44
Bonsoir Casy,
Voilà un extrait d'un .chm que j'ai écrit il y a longtemps...
J'espère que ce ne sera pas du chinois pour Mimosa :
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 elles-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'ALIASIl 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.dllDéclare functionTitilib "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 Kernel32Si nous la déclarions ainsi :Declare Function _lopen Lib "kernel32" (ByVal _lpPathname As String, ByVal ireadWrite As Long) As LongVB lirait bien évidemment :Declare Function lopen Lib "kernel32" (ByVal _lpPathname As String, ByVal ireadWrite As Long) As Longce qui provoquerait une erreur !
mimosa803
Messages postés345Date d'inscriptionjeudi 15 février 2007StatutMembreDernière intervention24 avril 2010 5 juin 2007 à 22:50
merci j'ai une dernière question et j'espère que je t'ai pa dérangé.
Est ce que les fonctions fournie dans la Dll sans acceptable quelque soit le language de programmation car dans la documentation que j'ai ,j'ai vu des fonctions avec des pointeurs donc est ce que je peu faire en vb byRef pour remedier e ce problème
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 5 juin 2007 à 22:53
Toutes fonctions contenues dans une librairie (dll) compatible Windows peuvent êtres appelées par tout langage de développement
compatible Windows (ce qui est le cas de VB).
Attention si tu doit passer des tableaux ou des chaines de caractères à une dll, ils (elles) doivent etre déjà dimentionner avant le passage à la dll. Celle-ci ne fera que les remplir