Fichiers dll

Résolu
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010 - 5 juin 2007 à 21:59
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 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

15 réponses

jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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).

Je vais au dodo, là...
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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.
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
5 juin 2007 à 22:08
Au faut, mimosa : ce matériel, c'est quoi ? toujours la même pointeuse ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 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
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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)
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 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é
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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.
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 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
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
5 juin 2007 à 22:43
voila c'est ce que je cherche donc après lib je dois mettre le chemin du fichier DLL
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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 !
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 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


 
0
jmfmarques Messages postés 7668 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 28
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).
0
mimosa803 Messages postés 345 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 24 avril 2010
5 juin 2007 à 22:56
Grand merci monsieur vous m'avez donné espoir ,donc je vé commencé mon travail dés demain.
Alors bonne nuit
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
5 juin 2007 à 22:56
Pour l'histoire des pointeurs, essaye de regarder ce document --> http://rp.developpez.com/vb/tutoriels/dll/

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

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0