Page 1 sur 1

[..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : jeu. 29 sept. 2011 12:06
par KrisKenshin
Bonjour à tous,

Rare sont mes apparitions sur ce forum (réponses souvent trouvées après quelques recherches), mais là je dois avouer que je coince radicalement.

Mon besoin est simple : piloter des IHM d'un programme développé sous Labwindows, en utilisation les fonctions de la dll associée. Cette procédure a pour but de contourner l'absence de control ID sur ces IHM spécifiques (impossibilité donc d'utiliser des fonctions du type "ControlClick") et d'éviter de se rabattre sur un "jonglage" de Send("{TAB}").

J'ai en ma possession la dll et le .h associé, contenant les prototypes des fonctions contenues dans la dll. Exemple de prototype de fonction :

Code : Tout sélectionner

int __declspec(dllexport) __stdcall CloseIHM()
Là où ça coince, c'est que lors de l'utilisation de "DllCall" pour faire appel à "CloseIHM" contenue dans la dll, AutoIt crash (chemin de la dll trouvée, et fonction trouvée pourtant...). Exemple d'utilisation de "DllCall" :

Code : Tout sélectionner

;Lancement du programme avec "Run"
;code

;Appel d'une fonction de pilotage d'IHM
DllCall("chemin_dll.dll", "int", "CloseIHM") ;également testé : DllCall("chemin_dll.dll", "int:cdecl", "CloseIHM") 
 
Résultat : crash d'AuroIt...
Ma question est donc la suivante : Est-ce la syntaxe du protype de fonction contenue dans la dll qui pose problème à AutoIt, ou bien tout autre problème que je n'aurai pas encore identifié???

Merci d'avance pour les réponses que vous pourriez apporter.
Cordialement,
KK

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : ven. 30 sept. 2011 15:44
par tanguy53
Salut la communauté,
Salut Kriskenshin,

Le problème que tu soulèves m'interesse beaucoup. J'ai développé un programme sous LabWindow CVI, et je souhaite utiliser les fonctions de la dll que j'ai généré.
Tout comme toi, le logiciel crash à l'appel de la fonction.

Au boulot on vient de centraliser toute notre gestion sur https://www.setinup.com/, ça nous a évité pas mal de plantages liés à des outils qui ne communiquaient pas entre eux.

Tanguy

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : lun. 03 oct. 2011 10:58
par tanguy53
Salut, je vois que la question fait peur! ^^
Est ce que quelqu'un a déja utilisé autoit pour piloter des dll générées sous LABWindows?

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : lun. 03 oct. 2011 16:44
par tanguy53
Personne ne peut apporter une réponse? quelle soit négative ou positive =)
Cordialement

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : lun. 03 oct. 2011 23:01
par Tlem
Heuu, une réponse négative n'est pas franchement des plus intéressante, mais si cela peut vous rassurer : Non, je n'ai jamais utilisé AutoIt pour piloter une dll générée sous LABWindows !

D'ailleurs, comme je n'ai pas encore demandé à mon grand ami G....., je ne sais pas ce qu'est LABWindows. :oops:

Ceci dit, pour 'piloter' une dll, il faut en avoir la documentation complète, car si vous ne donnez pas les bonnes valeurs en argument, vous allez droit à l’échec.
J'ai la fainéantise de chercher pour vous, mais si vous cherchez sur le forum, vous trouverez un lien vers un document Anglais parlant du 'pilotage' des dll qui pourrait peut être vous être utile.

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : lun. 03 oct. 2011 23:11
par jchd
La DLL et le script sont-ils bien tous les deux 32 ou-exclusif 64 bits ?
Le mélange n'est pas possible.
Avec quel compilateur est réalisée la DLL (possibilité de conventions d'appel déviantes, auxquelles je crois peu en l'occurence) ?

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : mer. 05 oct. 2011 09:20
par tanguy53
La DLL et le script sont tous les deux issus d'un 32 bits

De plus le compilateur de la DLL est visual C/C++

Re: [..] Crash AutoIt : DllCall appelant dll Labwindows

Posté : mer. 05 oct. 2011 11:49
par jchd
Mouais, il y a autre chose. Seul problème : je vois mal quoi d'ici.
Il faudrait regarder ça sous debugger. Recompile avec les options qui vont bien et jette un oeil sur le point d'entrée d'une fonction simple bidon qui fait f(x) -> x+1.