Problème création dll contenant un ocx

cs_Erwine Messages postés 3 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 30 août 2006 - 30 août 2006 à 16:38
wwwkoko Messages postés 1 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 21 janvier 2007 - 21 janv. 2007 à 20:57
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

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 août 2006 à 16:50
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 #
0
cs_Erwine Messages postés 3 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 30 août 2006
30 août 2006 à 17:05
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...
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
30 août 2006 à 17:15
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 #
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
30 août 2006 à 18:40
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
30 août 2006 à 18:41
c'est le Indicate qui semble ne pas être instancié....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_Erwine Messages postés 3 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 30 août 2006
30 août 2006 à 20:44
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

@ +
0
wwwkoko Messages postés 1 Date d'inscription samedi 13 janvier 2007 Statut Membre Dernière intervention 21 janvier 2007
21 janv. 2007 à 20:57
Si c'est possible Je peux avoir une copie de ton OCX


Merci d'avace
0
Rejoignez-nous