[..] AutoIt, Mapinfo et fonctions de rappel (callback)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
snaileater
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 26 nov. 2008 20:45
Status : Hors ligne

[..] AutoIt, Mapinfo et fonctions de rappel (callback)

#1

Message par snaileater »

Please, please ... je cherche quelqu'un ayant des compétences sur les deux domaines - Mapinfo (logiciel de "cartographie") et AutoIt :

J'ai créé une interface AutoIt avec une carte Mapinfo (objet Map) dessus. je voudrais que mon application cliente autoIt réagisse (par exemple) à un clic (outil sélection de Mapinfo par exemple) ou une autre interaction sur un objet Map de Mapinfo. Pour cela il faut apparemment utiliser les fonctions de rappel (callback). J'ai vu des tonnes d'exemples en Visual Basic mais je n'arrive pas à trouver la méthode en autoIt (la syntaxe plutôt) ...

Je cherche quelqu'un qui aurait des compétences sur les deux sujets ...

En gros ça doit ressembler à ça :

Code : Tout sélectionner

$o_Mapinfo = ObjCreate("MapInfo.application")

$toto = DLLCallbackRegister ("_toto", "int", "str")
$h_toto = DllCallbackGetPtr($toto)

$o_Mapinfo.SetCallback($h_toto)

Func _toto($str_mapinfo)
;
... Mon code
;
EndFunc
En l'occurrence la méthode SetCallback me génère systématiquement une erreur (erreur sur le paramètre passé ? ... je ne sais pas ....)

Quelqu'un aurait-il expérimenté le sujet ?

Merci d'avance.
Modifié en dernier par Tlem le mer. 26 nov. 2008 22:52, modifié 1 fois.
Raison : Ajout de la balise [..] dans le titre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: AutoIt, Mapinfo et fonctions de rappel (callback)

#2

Message par Tlem »

Merci de respecter les règles de présentation d'un message dont voici le lien : http://www.autoitscript.fr/forum/viewto ... f=35&t=595.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] AutoIt, Mapinfo et fonctions de rappel (callback)

#3

Message par sylvanie »

Bonsoir,
Est ce que l'erreur en question est un crash ?
si oui, il faut vérifier si la dll est appelable en cedcl au lieu du stdcall (cf remarque de l'aide de dllcall qui est vraie également dans le cas de la déclaration de calback).

J'avais eu ce pb lors de la déclaration d'une callback pour une librarie du nom de libcurl.
en gros il faut essayer :
$toto = DLLCallbackRegister ("_toto", "int:cedcl", "str")
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
snaileater
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 26 nov. 2008 20:45
Status : Hors ligne

Re: [..] AutoIt, Mapinfo et fonctions de rappel (callback)

#4

Message par snaileater »

bon ... merci de tenter de me répondre en tout cas ...

Excuse moi ta question est un peu du chinois pour moi ... J'ai vu beaucoup de codes en VB où apparemment l'implémentation des callback ne me semblait pas trop compliquée ... mais là dans la syntaxe AutoIt je rame complétement ...

Et comme je ne maitrise pas du tout la théorie qui est derrière (et que mon C et mes pointeurs sont très très loin ...)

J'ai utilisé le bout de code fourni dans l'aide d'autoit "com error handler" et l'erreur qu'il semble me retourner est "type non corresponding" comme si je ne passais pas le bon paramètre ...

Quand je teste la ligne avec le Setcallback j'ai cette mm erreur quelque soit le type de variable que je lui passe (tests "bidons" que j'ai voulu faire ...) ... c'est strange non ?

Je suis sous Vista 64, se pourrait-il que ce soit une histoire de longueur de pointeur (32-64) ?

Sinon tu me parles de DLL, en l'occurrence je n'appelle aucune dll c'est juste la fonction AutoIt _toto que je veux déclarer comme gestionnaire du callback (donc pas d'appel à des librairies "extérieures"...)

Je vais aller voir la doc AutoIt que tu me cites (DllCall) ...

Merci d'avance si tu peux m'aiguiller ...
snaileater
Niveau 1
Niveau 1
Messages : 6
Enregistré le : mer. 26 nov. 2008 20:45
Status : Hors ligne

Re: [..] AutoIt, Mapinfo et fonctions de rappel (callback)

#5

Message par snaileater »

Et avec cette capture d'écran ... saurais-tu me dire quelle est la bonne syntaxe à adopter pour SetCallBack ?
Fichiers joints
OleViewer.jpg
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] AutoIt, Mapinfo et fonctions de rappel (callback)

#6

Message par sylvanie »

Derrière le chargement d'un obj com/ole se cache une/des Dll, d'où ma remarque sur les dll.
Manifestement, c'est du stdcall en terme de format (d'après le jpg)
Le gros soucis pour ma part est que je ne sais pas ce qui se cache derrière le type dispatcher.
Généralement un dispatcher associe un Id à une fonction, mais après, pour l'association c'est propre à l'implémentation de l'objet.
Mais dans ce cas je ne pense pas qu'un simple passage de pointeur de fonction soit suffisant :(
Pour ma part je passe la main. :s
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
Répondre