bilat0
Messages postés17Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention 2 octobre 2005
-
2 sept. 2005 à 21:22
bilat0
Messages postés17Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention 2 octobre 2005
-
4 sept. 2005 à 13:43
Bonsoir, je cherche à utiliser les fonctions qui se trouvent dans une DLL externe à mon programme VB.
Le seul problème est que je ne sais pas quelle ligne écrire pour dire à VB où se trouve la DLL sur mon disque dur... en l'occurence ce serait App.Path + "\data\xyz.dll"
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 2 sept. 2005 à 23:06
je vais t'aider BruNews
SetCurrentDirectory est une fonction pour dire à VB que son répertoire "en cours" est celui que tu définis.
donc tu créés un module contenant
Public Sub Main()
'.....instruction de BruNews
Form_Principale.Show
End Sub
et tu définis le projet sur ce Main pour démarrer. donc forcément, VB va chercher le Path de la DLL dans son CurrentPath, que tu auras défini dans ton Main
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 4 sept. 2005 à 13:31
une Form, un Bouton
Private Declare Function SetCurrentDirectory Lib "kernel32" Alias "SetCurrentDirectoryA" (ByVal lpPathName As String) As Long
Private Declare Function GetCurrentDirectory Lib "kernel32" Alias "GetCurrentDirectoryA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Sub Command1_Click()
'1 : répertoire de l'application
MsgBox "rep appli : " & App.Path
'2 : donne le rep actuel
Call SetCurrentDirectory("C:\WINDOWS")
'3 : récupère le rep actuel
Dim aPath As String
aPath = String(255, Chr(0))
Call GetCurrentDirectory(255, aPath)
MsgBox "rep donné : " & aPath
End Sub
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 2 sept. 2005 à 21:47
Mais si qu'il sera d'accord, le mieux est de ne pas lui demander.
Sérieux je l'ai déjà fait et va impec.
Lance l'appel SetCurrentDirectory depuis ton entrée Main(), suffit juste que soit fait avant le 1er appel vers la dll, ensuite par force le système trouvera ta dll à charger car elle sera dans ta currentDirectory.
Dans ton "Declare Function..." ne plus mettre de chemin du tout.
bilat0
Messages postés17Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention 2 octobre 2005 2 sept. 2005 à 21:59
Alors je dois faire un truc faux... mais en tout cas VB me répond "Invalid Outside Procedure" avec cette ligne là : SetCurrentDirectory() = App.Path que je là mette à Form_Load ou après Option Explicit
bilat0
Messages postés17Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention 2 octobre 2005 2 sept. 2005 à 22:21
Désolé mais euh... tu me fiches dedans avec ton main() j'ai pas de main en VB... si tu penses au contenu de la DLL, je ne l'ai pas créer moi, c'est une utilisation après achat...
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 2 sept. 2005 à 22:37
Bien entendu il y a un main() dans vb, suffit d'indiquer dans propriétés du proj que tu veux démarrer sur main(), auquel cas tu crées la fonction dans un module et dedans tu chargeras la form que tu voudras après l'appel SetCurrentDirectory.
Hooooo décidemment, erreur au démarrage de l'application, j'ai parlé trop vite !
Il pointe encore et toujours cette ligne de SetCurrentDirectory()=App.Path, l'erreur est "Sub or Function not defined" décidemment, je n'y arriverai donc jamais ! c'est quand même tout simple comme truc...
bilat0
Messages postés17Date d'inscriptionmardi 4 mars 2003StatutMembreDernière intervention 2 octobre 2005 4 sept. 2005 à 12:27
Je dois avoir un sérieux bug, car VB me répond encore et toujours "Sub or Function not defined" sur la ligne : Call SetCurrentDirectory(App.Path) ça commençe à me