Page 1 sur 1
Valeur Alphabetique retourné pâr une dll
Publié : ven. 10/sept./2004 15:05
par LOULOU25
Comment faire pour récuperer une valeur alphabétique retourné par une fonction dans une dll , pure basic ne retournant que des valeurs numérique. ?
Un exemple de programmation concret m'aiderait beaucoup a avancer.
Merci par avance
Publié : ven. 10/sept./2004 15:15
par kelly
une valeur alphabetique ?... donne un exemple pour voir...
Publié : ven. 10/sept./2004 15:27
par Oliv
Ne sachant pas si tu as fait la DLL ou pas, je te propose les deux :
Si c'est toi qui fait la DLL, il faut faire
Code : Tout sélectionner
ProcedureDLL Lettre()
Global Lettre.s
Lettre = "Voici une chaine de caractères"
ProcedureReturn @Lettre ; Renvoi le pointeur de la chaine de caractères
EndProcedure
Et pour récupérer dans ton programme
Code : Tout sélectionner
Recuperation.s = PeekS(CallFunction(#Librairie,"Lettre"))
Debug Recuperation
Je pense que lorsque tu n'écris pas la DLL, le deuxième code fonctionne aussi mais je n'ai jamais testé.
Par contre, je n'ai pas testé ce code mais c'est comme ça que je procède (il ce peut qu'il y ai une erreur au niveau du nom d'une procédure

)
Oliv
Publié : ven. 10/sept./2004 15:35
par nico
Il faut que tu saches que les valeurs alphabétiques sont aussi des valeurs numériques, il faut procéder comme Oliv te l'a présenté dans le cas d'une chaîne de caractère retournée par une Dll.

Publié : ven. 10/sept./2004 15:41
par LOULOU25
En fait j'utilise une dll que je n'ais pas fabriqué
Un exemple
CallFunction(0,"AU3_WingetTitle","","")
Normalemetn en retour de cette fonction je devrais avoir le nom de la fenetre active mais en fait je n'ais qu'une valeur numérique
Publié : ven. 10/sept./2004 15:48
par nico
Oui, mais toi tu fais comment pour récupérer ta valeur?
Publié : ven. 10/sept./2004 15:54
par LOULOU25
Justement je ne sais pas comment faire car si je code comme suit
toto=CallFunction(0,"AU3_WinGetTitle","","")
je recupére une valeur numérqiue dans toto alors que normalemetn il devrait y avoir le titre de la fenetre
Publié : ven. 10/sept./2004 16:05
par nico
et si tu fais toto.s, tu obtiens quoi?
Publié : ven. 10/sept./2004 16:06
par LOULOU25
J'obtiens une valeur numérique sur 5 chiffres exemple 15645
Publié : ven. 10/sept./2004 16:09
par nico
C'est bizarre, je ne sais pas et si tu remplace tes chaînes null par 0, ca donne quoi, en gardant toto.s?
Publié : ven. 10/sept./2004 17:01
par nico
J'ai oublié, il te faut au préalable initialiser ta chaîne de caractère pour qu'elle soit capable de recevoir les données, donc on va lui donner une certaine longueur avec space().
En voici un exemple:
Code : Tout sélectionner
;Avec AutoItDLL version v1.11
szTitle.s=Space(100)
If OpenLibrary(0,"AutoitDll")
CallFunction(0,"AUTOIT_WinGetActiveTitle",@szTitle)
MessageRequester("info", szTitle)
CloseLibrary(0)
EndIf
Autre chose importante, avec cette fonction, tu seras obligé de créer un exécutable si tu veux vérifier que ça marche.
J'espère que ça va t'aider!

Publié : ven. 10/sept./2004 18:16
par LOULOU25
J'utilise la derniére version de AUTOIT 3.0.103 avec cette version cela ne marche pas Je te joins la DLL si tu veux.
Publié : ven. 10/sept./2004 19:31
par nico
Je l'ai téléchargé mais je n'y arrive pas!
J'ai toujours un message d'erreur!
Publié : ven. 10/sept./2004 20:10
par LOULOU25
nico a écrit :Je l'ai téléchargé mais je n'y arrive pas!
J'ai toujours un message d'erreur!
J'ai vu qu'il y avait également un fichier .lib avec un fichier H , représentant également les mêmes fonctions que dans la dll , que peux-ton en faire avec pure basic ?