Comdlg32.dll, kernel32.dll, advapi32.dll

Dominique1200 Messages postés 5 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 6 août 2004 - 4 août 2004 à 14:37
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 6 août 2004 à 23:13
Bonjour à tous,

Je voudrais utiliser une librairie : comdlg32.dll

Mais lors de la déclaration de ma fonction :

Public Declare Function GetOpenFileName Lib "comdlg32.dll" _
Alias "GetOpenFileNameA" (pOpenfilename As openfilename) As Long

Le compilateur me dit : « Type défini par l’utilisateur non défini ».

Je pense qu’une des causes d’erreur est la suivante : c‘est parce que le compilateur ne trouve pas «GetOpenFileName ». Je pense que pour déclarer une fonction qui se trouve dans une librairie externe, il faut mettre la librairie dans les références (Outils > Références). Mais quand j’essaye d’ajouter la librairie « comdlg32.dll », le VBA refuse de le faire. La rubrique d’aide correspondante dit que c’est peut-être parce que cette DLL n’est pas lisible par Visual Basic.

Pourtant cette librairie comdlg32.dll se trouve bien sur mon ordinateur (même à plusieurs endroits), et j’ai aussi bien fait le :

Public Type openfilename

End Type

J’ai le même problème avec la librairie kernel32.dll et advapi32.dll

Dans mon programme, j’utilise une autre déclaration de fonction, utilisant une autre librairie : shell32.dll. J’ai pu ajouter cette librairie dans mes références, je l’ai trouvée sous le nom de « Microsoft Shell Controls and Automation » (dans la liste de librairies que Visual Basic propose). Donc pour cette librairie-là, tout fonctionne bien.

Pensez-vous que, comme le dit l’Assistant Aide, la librairie comdlg32.dll n’est que lisible par Vb et pas par VBA (Access) ?

Un grand merci !!

Dominique1200

PS : je dispose pour le VBA d’Access 10.0 et aussi Visual Basic 6.0

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 août 2004 à 14:51
tu utilises un parametre definit en tant qu'OPENFILENAME

c'est ca qui pos probleme :

Public Type OPENFILENAME
lStructSize As Long
hwndOwner As Long
hInstance As Long
lpstrFilter As String
lpstrCustomFilter As String
nMaxCustFilter As Long
nFilterIndex As Long
lpstrFile As String
nMaxFile As Long
lpstrFileTitle As String
nMaxFileTitle As Long
lpstrInitialDir As String
lpstrTitle As String
flags As Long
nFileOffset As Integer
nFileExtension As Integer
lpstrDefExt As String
lCustData As Long
lpfnHook As Long
lpTemplateName As String
End Type

Public Declare Function GetOpenFileName Lib "comdlg32.dll" Alias "GetOpenFileNameA" (ByRef pOpenfilename As OPENFILENAME) As Long

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
0
Dominique1200 Messages postés 5 Date d'inscription samedi 31 juillet 2004 Statut Membre Dernière intervention 6 août 2004
6 août 2004 à 10:42
Un grand merci.

J'avais bien fait le

Public Type nom_type
...
End Type

Mais c'est parce que justement j'avais mis cette
déclaration de type après le "Public Declare Function".
L'erreur était simple.

Mais par contre, j'ai été étonné qu'il ne faille pas ajouter
les librairies API à la liste des librairies utilisées dans
notre projet par OUTIL > REFERENCES.
Je vous dis cela, parce que j'ai perdu pas mal de temps à essayer
d'ajouter ces librairies à mon projet, mais Visual Basic refuse.

et je trouve dommage que dans tout ce que j'ai lu (livres ou sites web), je n'ai rien vu à ce propos.

Juste mentionner le nom de la librairie qui nous intéresse (par exemple comdlg32.dll,
kernel32.dll, advapi32.dll) suffit. Personnellement, je trouverais plus logique de
mentionner le path complet de la librairie, j'ai essayé, cela fonctionne
aussi.

Encore merci.

Dominique
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 août 2004 à 23:13
Pas besoin de tout le chemin, ces Dll sont recherchées dans le repertoire de l'executable, et ensuite dans les repertoires systemes....

tu devrai aller faire un tour sur www.allapi.net"

tu pourrais récupérer un l'API Guide, et l'API Viewer

Amusez-vous ! ;)
Renfield - thomas_reynald@msn.com
Admin CodeS-SourceS
0
Rejoignez-nous