Problème création dll contenant un ocx

Signaler
Messages postés
3
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
30 août 2006
-
Messages postés
1
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
21 janvier 2007
-
Bonjour à toutes et à tous,


je travaille depuis plusieurs jours sur un projet qui me permettrais de récupérer

le poids d'une balance(precia-mollen) de camion.

Je suis analyste/programmeuse en Windev mais novice en programmation "VB"...

Le but étant de créer une dll sous VB contenant l'OCX fourni avec la balance.

Cette dll doit être utilisée ensuite dans Windev 9 pour récupérer le poids des camions.

Grace aux conseils des programmeurs VB trouvés sur ce site, j'ai pu créer une dll

permettant l'affichage d'un message(msgbox) dans windev.

Mais lorsque je souhaite intégrer la méthode me permettant de me connecter au port COM1

La description de la méthode a été fournie avec l'ocx.

Ce qui suit fonctionne très bien autant dans vb que dans windev...
//contenu de ma classe VB (class_bal)


Public Function affiche_mess()      

    MsgBox "hello"

End Function

// test appel de la dll dans VB

Option Explicit


Private Declare Function affiche_mess Lib "balance.dll" () As Long


Public Sub Form_Load()


    Dim obj As Object

    Shell "regsvr32 /s balance.dll"

    Set obj = CreateObject("projet_balance.class_bal")

    obj.affiche_mess

End Sub

Ce qui suit ne fonctionne pas, VB me retourne une erreur 424 "Un objet est requis"
//contenu de ma classe VB (class_bal)


Public Function connect_balance()

    i = Indicate.Connect("\\.\com1", "1200,e,7,1", 3, 0,
1)  --> indicate est le composant ajouté grace à l'ocx...

    If i = 0 Then MsgBox ("COM1 non
prêt")                         
Connect est la méthode

End Function

// test appel de la dll dans VB

Option Explicit



Private Declare Function connect_balance Lib "balance.dll" () As Long



Public Sub Form_Load()



    Dim obj As Object


    Shell "regsvr32 /s balance.dll"


    Set obj = CreateObject("projet_balance.class_bal")


    obj.connect_balance  --> envoie une erreur 424 "Un objet est requis"


End Sub


Si l'appel de la dll ne fonctionne déja pas dans VB, cela ne fonctionnera pas dans Windev

J'espère avoir été claire dans mes explications


D'avance merci pour votre aide


@ bientot

7 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Je ne vais pas résoudre ton problème, mais juste une petite question (je ne me souviens pas avoir suivie ton histoire de balance), tu dis que l'ocx est fourni avec ta balance. N'aurais-tu pas aussi une dll fournie au cas ou tu voudrais faire ton appli en C par exemple, du moins sans utiliser l'ocx ?
Si c'est le cas, cette dll ne fonctionnerait-elle pas directement avec Windev ?
Ca t'éviterait de te prendre la tete à créer une Dll en VB. Chose qui est tout de même pas évidente.

Sinon est-ce-que ton ocx s'appelle Indicate dans la dll. Si c'est pas le cas, je pense que le nom de l'ocx doit apparaitre d'une manière ou d'une autre dans l'instruction. Sinon VB doit pas savoir qu'il faut aller chercher indicate dans l'ocx.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
3
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
30 août 2006

Bonjour Casy,

Malheureusement, la dll n'est pas fournie, j'ai contacté la société qui fourni cette balance et
le helpdesk m'a affirmé ne pas avoir cette dll
Lors de l'ajout du composant correspondant à l'ocx, VB a ajouté un icone dans la liste des composant...
Il l'a appellé indicate. Mon ocx s'appelle indicate.ocx justement...
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
La liste des composants ?? parle-tu de la boite à outil de VB (généralement la colonne de gauche).

Si c'est le cas, cela ne suffit pas, là il est juste disponible parmis les outils ajoutables à ton projet. Il faut que tu l'ajoute à ton projet. Càd que tu pose ton composant sur une form de ton projet. Là il aura un nom (peut-etre du style 'Indicate1')que tu retrouvera dans la propriété Name et que tu peux éventuellement modifier.
Ensuite dans le code il doit falloir faire un truc du genre NomDelOcx.Connect .....

Je sais si tu me suis ???

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
49
salut,
si l'ocx est dépendant d'une dll non fournie il ne fonctionnera jamais.
quant à ton utilisation de balance.dll, c'est étrange...
d'un côté tu la déclares comme une vraie dll (comme une API) donc n'a pas besoin d'être enregistrée, et de l'autre tu l'enregistre comme un activex (donc fausse dll) dynamique...
<hr size="2" width="100%" />Prenez un instant pour répondre à ce sondage svp
Messages postés
17287
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
74
c'est le Indicate qui semble ne pas être instancié....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
3
Date d'inscription
mercredi 23 août 2006
Statut
Membre
Dernière intervention
30 août 2006

Bonsoir :)

Casy, merci, tu m'as mise sur la bonne voie... en effet, je n'avais pas créé de form avec le champ
Indicate1.
Cà a porté ces fruits   1000 mercis à vous tous pour vos conseils

@ +
Messages postés
1
Date d'inscription
samedi 13 janvier 2007
Statut
Membre
Dernière intervention
21 janvier 2007

Si c'est possible Je peux avoir une copie de ton OCX


Merci d'avace