Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Liaison DLL ActiveX / Windev

253 views
Skip to first unread message

Gilles RONSIN

unread,
Aug 21, 2002, 9:43:32 AM8/21/02
to
Bonjour,

Merci de m'orienter si je ne suis pas dans le bon groupe.

J'ai écris une DLL ActiveX en VB6 pour interfacer un capteur de notre cru.
L'utilisation par VBSCRIPT ou VB fonctionne bien. Un utilisateur écrit une
application sous Windev et me signal que mon contrôle ne fonctionne pas. Y
a t'il une précaution à prendre en VB, une astuce en WinDev (que je ne
connais pas) ou faut il réécrire la DLL en C++ ?

Merci pour vos suggestions.

--
Embryon de site : http://gilles.ronsin.free.fr
ICQ 70141405 - MSN: gilles...@msn.com

Les femmes qui veulent être les égales des hommes,
manquent cruellement d'ambition. (Wollinski)

Fabienf

unread,
Aug 21, 2002, 9:50:01 AM8/21/02
to
Faudrait d'abord savoir qu'est-ce qui ne fonctionne pas. Est-ce le passage
de parametres qui coincent ?

Fabien

La connaissance s'accroit quand on la partage.JBC

"Gilles RONSIN" <gilles...@free.fr.invalid> a écrit dans le message de
news: ak0cg9...@d2r2.h07b8f845.invalid...

Fabrice Burghgraeve

unread,
Aug 21, 2002, 11:01:28 AM8/21/02
to
bonjour.

(...)


> J'ai écris une DLL ActiveX en VB6 pour interfacer un capteur de notre cru.
> L'utilisation par VBSCRIPT ou VB fonctionne bien. Un utilisateur écrit une
> application sous Windev et me signal que mon contrôle ne fonctionne pas. Y
> a t'il une précaution à prendre en VB, une astuce en WinDev (que je ne
> connais pas) ou faut il réécrire la DLL en C++ ?
>

(...)
a priori, les DLLs sont compilees suivant un format standard, donc VB ou C++
c'est pareil.
Il y a un piege (au moins) a connaitre en windev, c'est qu'on ne peut pas
passer une zone de plus de 64 Ko. (de memoire. valeur à confirmer)
Utilisez-vous ca ?

Il faut assi declarer les pointeurs en entiers longs car pas de type
pointeur en windev.
Pour les chaines, ne faut pas utiliser des variables du type chaine.
il faut utiliser chaine asciiz (chaine nul-terminee de taille fixee au
depart)

Enfin tout ca suppose que l'erreur ne vienne pas de votre controle, mais du
programme windev qui l'appelle.......
Et ce sont des pieges dans lesquels on tombe tres vite, et donc dont on
trouve tres vite la solution...
Ca m'etonnerait que le programmeur n'ait pas pense à ca...


Pourriez-vous etre plus precis sur le "ne fonctionne pas" ?

--
Fabrice Burghgraeve
Computer & Services
f_pas_de_spa...@computeretservices.com
(enlevez le -pas_de_spam_ pour me répondre en privé)


Dev

unread,
Aug 21, 2002, 11:10:22 AM8/21/02
to
Quelle version de Windev ?

--
Cordialement
Christophe Charron


"Gilles RONSIN" <gilles...@free.fr.invalid> a écrit dans le message de
news: ak0cg9...@d2r2.h07b8f845.invalid...

Gilles RONSIN

unread,
Aug 21, 2002, 11:50:11 AM8/21/02
to
"Fabienf" <fab...@altern.org> wrote in news:ak05pq$biq$1...@wanadoo.fr:

> Faudrait d'abord savoir qu'est-ce qui ne fonctionne pas. Est-ce le
> passage de parametres qui coincent ?

C'est vague pour moi aussi. Extrait du message :
"L'intégration du contrôle dans Visual Basic fonctionne, cependant mon
plus gros problème réside dans le fait que je ne peux pas l'insérer dans
mon programme Windev.
Le contrôle ne semble pas accessible et ses méthodes encore moins.
Pourtant,
le contrôle et la DLL ont été enregistrées correctement avec regsvr32.
Avez-vous une idée sur la question?"

> La connaissance s'accroit quand on la partage.JBC

(PS ne serais-ce pas de JCB plutôt ?)

Gilles RONSIN

unread,
Aug 21, 2002, 11:50:12 AM8/21/02
to
"Fabrice Burghgraeve" <fburgh...@computeretservices.com> wrote in
news:ak09ps$2r4$1...@news.nordnet.fr:

> bonjour.
>
> (...)
>> J'ai écris une DLL ActiveX en VB6 pour interfacer un capteur de notre
>> cru. L'utilisation par VBSCRIPT ou VB fonctionne bien. Un utilisateur
>> écrit une application sous Windev et me signal que mon contrôle ne
>> fonctionne pas. Y a t'il une précaution à prendre en VB, une astuce
>> en WinDev (que je ne connais pas) ou faut il réécrire la DLL en C++ ?
>>
> (...)
> a priori, les DLLs sont compilees suivant un format standard, donc VB
> ou C++ c'est pareil.
> Il y a un piege (au moins) a connaitre en windev, c'est qu'on ne peut
> pas passer une zone de plus de 64 Ko. (de memoire. valeur à confirmer)
> Utilisez-vous ca ?

Je ne pense pas. C'est tout petit. Juste une interface entre notre
capteur et un envoi en mode chaine. Voici un vbscript qui l'utilise :

Dim Capteur
Set Capteur=CreateObject("Madll.Acquisition")

Capteur.Init

do while Capteur.isRunning
wscript.echo Capteur.Sample
loop

msgbox "c'est fini"



> Il faut assi declarer les pointeurs en entiers longs car pas de type
> pointeur en windev.
> Pour les chaines, ne faut pas utiliser des variables du type chaine.
> il faut utiliser chaine asciiz (chaine nul-terminee de taille fixee au
> depart)

C'est peut être la que ça coince. Mais je suis quasi obligé de
transmettre des chaines de longeur variable.

> Enfin tout ca suppose que l'erreur ne vienne pas de votre controle,
> mais du programme windev qui l'appelle.......

J'espère mais vbscript et vb6 peuvent l'utiliser. Ca prouve qu'il est un
peu fonctionnel :-) non ?

> Et ce sont des pieges dans lesquels on tombe tres vite, et donc dont
> on trouve tres vite la solution...

On est un peu concurrent mais sur un projet commun, ça limite les
possibilités d'échange :-(

> Ca m'etonnerait que le programmeur n'ait pas pense à ca...

Je ne connait pas son niveau et le mien est nul en Windev



> Pourriez-vous etre plus precis sur le "ne fonctionne pas" ?

Dans la réponse à Fabienf j'ai cité la réponse..

Merci de t'être penché sur mon problème.

Gilles RONSIN

unread,
Aug 21, 2002, 11:50:13 AM8/21/02
to
"Dev" <wind_...@prologiq.fr> wrote in
news:3d63ae48$0$1064$afc3...@news.easynet.fr:

> Quelle version de Windev ?

Je lui poserais la question....

laotseu

unread,
Aug 21, 2002, 6:21:30 PM8/21/02
to
Fabrice Burghgraeve wrote:
> bonjour.
>
> (...)
>
>>J'ai écris une DLL ActiveX en VB6 pour interfacer un capteur de notre cru.
>>L'utilisation par VBSCRIPT ou VB fonctionne bien. Un utilisateur écrit une
>>application sous Windev et me signal que mon contrôle ne fonctionne pas. Y
>>a t'il une précaution à prendre en VB, une astuce en WinDev (que je ne
>>connais pas) ou faut il réécrire la DLL en C++ ?
>>
>
> (...)
> a priori, les DLLs sont compilees suivant un format standard, donc VB ou C++
> c'est pareil.


Heu, Fabrice... c'est une DLL *ActiveX*, pas une DLL standard.
Avec les AppelDll(), ça ne marche pas. Il faut utiliser la syntaxe OLE.

Laotseu

Fabrice Burghgraeve

unread,
Aug 21, 2002, 12:14:57 PM8/21/02
to
re
(...)

>
> C'est peut être la que ça coince. Mais je suis quasi obligé de
> transmettre des chaines de longeur variable.
>
(...)
alors dans ce cas la solution est de passer deux parametres aux fonctions de
la DLL : une chaine asciiz, et sa longueur.
C'est courant en C (ma_fonction(char * ma_chaine, int lg_chaine))
C'est par exemple utilisé dans la fonction read (ssize_t read (int fildes,
void * buf, size_t nbyte))

Et si la chaine qui est de taille variable est retournee, la solution
courante est de l'allouer et de retourner le pointeur, et egalement la
longueur de la chiane allouee.
Apres, pour recuperer ca dans windev, il me semble qu'il faut creer une
variable de type chaine (de windev),
l'initialiser avec nbcar espaces (pour que windev alloue la memoire
necessaire), puis recopier le bloc de memoire alloue dans la chaine.

laotseu

unread,
Aug 21, 2002, 6:27:47 PM8/21/02
to
Gilles RONSIN wrote:
> Bonjour,
>
> Merci de m'orienter si je ne suis pas dans le bon groupe.
>
> J'ai écris une DLL ActiveX en VB6 pour interfacer un capteur de notre cru.
> L'utilisation par VBSCRIPT ou VB fonctionne bien. Un utilisateur écrit une
> application sous Windev et me signal que mon contrôle ne fonctionne pas. Y
> a t'il une précaution à prendre en VB, une astuce en WinDev (que je ne
> connais pas) ou faut il réécrire la DLL en C++ ?
>
> Merci pour vos suggestions.
>
>
>

Pas de pb a priori pour utiliser une DLL ActiveX VB6 depuis Windev, mais
attention : il ne faut pas utiliser la syntaxe AppelDLL(), mais la
syntaxe OLE.

Dim Capteur
Set Capteur=CreateObject("Madll.Acquisition")

Capteur.Init

do while Capteur.isRunning
wscript.echo Capteur.Sample
loop

msgbox "c'est fini"

< A corriger éventuellement, ça fait quelques mois que je n'ai pas fait
ça, et pas la doc sous le nez>
Capteur est un objet OLE "MaDll.Acquisition")
Capteur>>Init()

TANTQUE Capteur>>isRunning()
// wscript ???
FIN

Je ne garanti pas la syntaxe pour la création de l'objet OLE (cf la
doc), mais grosso-modo c'est quelque chose du genre...

Laotseu

Gilles RONSIN

unread,
Aug 22, 2002, 2:50:24 AM8/22/02
to
laotseu <bde...@nospam.free.fr> wrote in
news:3D6413E3...@nospam.free.fr:

> Pas de pb a priori pour utiliser une DLL ActiveX VB6 depuis Windev,
> mais attention : il ne faut pas utiliser la syntaxe AppelDLL(), mais
> la syntaxe OLE.

> < A corriger éventuellement, ça fait quelques mois que je n'ai pas


> fait ça, et pas la doc sous le nez>

> Capteur est un objet OLE "MaDll.Acquisition")
> Capteur>>Init()
>
> TANTQUE Capteur>>isRunning()
> // wscript ???

wscript.echo Capteur.Sample permet de retourner sur la console la chaine
de caractère "Capteur.Sample". L'utilisateur lui, devra interprêter le
contenu de la chaine.

> FIN

> Je ne garanti pas la syntaxe pour la création de l'objet OLE (cf la
> doc), mais grosso-modo c'est quelque chose du genre...

Loatseu l'a dit.

Merci vénérable sage. Ta réponse sera transmise à mon alter ego de
l'autre entreprise.

Fabrice Burghgraeve

unread,
Aug 22, 2002, 6:26:22 AM8/22/02
to
gulp.
preuve de ma meconnaissance des mecanismes windows.
Alors la je peux pas aider j'ai fait de mon mieux, mais bon... C'etait pas
grandiose :)

--
Fabrice Burghgraeve
Computer & Services
f_pas_de_spa...@computeretservices.com
(enlevez le -pas_de_spam_ pour me répondre en privé)

"laotseu" <bde...@nospam.free.fr> a écrit dans le message de news:
(...)

Fabrice Burghgraeve

unread,
Aug 22, 2002, 6:53:09 AM8/22/02
to
re.

sur pcsoft.fr.windev, ce message (qui ne prouve pas que ca ne parche pas):
--- extrait ---
J'utilise un activeX dans une fenêtre Windev 5.5 et j'ai de nombreux
problèmes inexpliquables. D'après votre expérience, la gestion des activex
est elle robuste ou dois je chercher ailleurs les solutions à mes problèmes
?
--- fin extrait ---

C'est quelle version de windev au fait ?

Gilles RONSIN

unread,
Aug 22, 2002, 11:11:23 AM8/22/02
to
"Fabrice Burghgraeve" <fburgh...@computeretservices.com> wrote in
news:ak2fjo$1o1$1...@news.nordnet.fr:

Merci à tous de votre collaboration. Les éléments fournits par Laotseu ont
permis la connexion du capteur à un environnement WinDev.

0 new messages