Bonjour
Je cherche à m'interfacer avec Ivy.dll que vous trouverez àhttp://www 2.tls.cena.fr/products/ivy/download/binaries.html(en C#, C+
+,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent
très bien. J'ai essayé de les intégrer dans du code Windev (et à terme
je voudrais faire de même en Windev Mobile), mais ça ne marche pas.
Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel
et bien puisque déjà testé dans d'autres langages. Avez-vous une
idée ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais
ne trouve pas la fonction (j'ai essayé start, Start, START... même
résultat).
HndlLib est un entier
// Chargement de la librairie
sNomDLL est une chaîne
sNomDLL = "C:Mes ProjetsTest IvyIvy.dll"
// pour info, j'ai essayé aussi dans Windows, WIndowsSystem32... idem
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
AppelDLL32(sNomDLL,"start", "127.0.0.1:2010"))
Trace("ok")
// Décharge la librairie
DéchargeDLL(HndlLib)
FIN
Merci par avance
JC
Bonjour
Je cherche à m'interfacer avec Ivy.dll que vous trouverez àhttp://www 2.tls.cena.fr/products/ivy/download/binaries.html(en C#, C+
+,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent
très bien. J'ai essayé de les intégrer dans du code Windev (et à terme
je voudrais faire de même en Windev Mobile), mais ça ne marche pas.
Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel
et bien puisque déjà testé dans d'autres langages. Avez-vous une
idée ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais
ne trouve pas la fonction (j'ai essayé start, Start, START... même
résultat).
HndlLib est un entier
// Chargement de la librairie
sNomDLL est une chaîne
sNomDLL = "C:Mes ProjetsTest IvyIvy.dll"
// pour info, j'ai essayé aussi dans Windows, WIndowsSystem32... idem
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
AppelDLL32(sNomDLL,"start", "127.0.0.1:2010"))
Trace("ok")
// Décharge la librairie
DéchargeDLL(HndlLib)
FIN
Merci par avance
JC
Bonjour
Je cherche à m'interfacer avec Ivy.dll que vous trouverez àhttp://www 2.tls.cena.fr/products/ivy/download/binaries.html(en C#, C+
+,...). Nous utilisons ces DLL en VB, C#, Java, elles fonctionnent
très bien. J'ai essayé de les intégrer dans du code Windev (et à terme
je voudrais faire de même en Windev Mobile), mais ça ne marche pas.
Chaque fois WD me dit que la fonction n'existe pas, or elle existe bel
et bien puisque déjà testé dans d'autres langages. Avez-vous une
idée ?
Voici un exemple de code ci-dessous. Windev charge bien la DLL, mais
ne trouve pas la fonction (j'ai essayé start, Start, START... même
résultat).
HndlLib est un entier
// Chargement de la librairie
sNomDLL est une chaîne
sNomDLL = "C:Mes ProjetsTest IvyIvy.dll"
// pour info, j'ai essayé aussi dans Windows, WIndowsSystem32... idem
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
AppelDLL32(sNomDLL,"start", "127.0.0.1:2010"))
Trace("ok")
// Décharge la librairie
DéchargeDLL(HndlLib)
FIN
Merci par avance
JC
Je cherche à m'interfacer avec Ivy.dll
Vince a formulé la demande :
C'est pas plutot IvyStart et non Start par hasard ?
Je cherche à m'interfacer avec Ivy.dll
Vince a formulé la demande :
C'est pas plutot IvyStart et non Start par hasard ?
Je cherche à m'interfacer avec Ivy.dll
Vince a formulé la demande :
C'est pas plutot IvyStart et non Start par hasard ?
JC a formulé la demande :Je cherche à m'interfacer avec Ivy.dllVince a formulé la demande :
C'est pas plutot IvyStart et non Start par hasard ?
Sinon, peut être qu'un utilitaire comme "DLL Export Viewer" ou
"dependencyWalker" permettra de retrouver le bon nom de la fonction.
A+
JC a formulé la demande :
Je cherche à m'interfacer avec Ivy.dll
Vince a formulé la demande :
C'est pas plutot IvyStart et non Start par hasard ?
Sinon, peut être qu'un utilitaire comme "DLL Export Viewer" ou
"dependencyWalker" permettra de retrouver le bon nom de la fonction.
A+
JC a formulé la demande :Je cherche à m'interfacer avec Ivy.dllVince a formulé la demande :
C'est pas plutot IvyStart et non Start par hasard ?
Sinon, peut être qu'un utilitaire comme "DLL Export Viewer" ou
"dependencyWalker" permettra de retrouver le bon nom de la fonction.
A+
j'ai fait le test avec DLL Export viewer et rien n'apparait dans la liste
j'ai fait le test avec DLL Export viewer et rien n'apparait dans la liste
j'ai fait le test avec DLL Export viewer et rien n'apparait dans la liste
Salut,
C'est pas plutot IvyStart et non Start par hasard ?
Salut,
C'est pas plutot IvyStart et non Start par hasard ?
Salut,
C'est pas plutot IvyStart et non Start par hasard ?
- si je charge Ivy.dll, le chargement se passe bien comme avant, mais
sur le IvyStart (au lieu du start précédemment), Windev me jette avec
une erreur grave (voir ci-dessous).
Que faire... ?
- si je charge Ivy.dll, le chargement se passe bien comme avant, mais
sur le IvyStart (au lieu du start précédemment), Windev me jette avec
une erreur grave (voir ci-dessous).
Que faire... ?
- si je charge Ivy.dll, le chargement se passe bien comme avant, mais
sur le IvyStart (au lieu du start précédemment), Windev me jette avec
une erreur grave (voir ci-dessous).
Que faire... ?
Je n'ai pas de code en VB.
J'ai utilisé DLL Export Viewer, mais c'est plus compliqué que ça. A
l'URL indiqué, on trouve des DLL différentes dont :
- Ivy.dll, Ivy DLL C#
- com-ivy.msi, Ivy COM component for Visual Basic for Applications
(0.1) , qui une fois exécuté fournit un répertoire avec une comIvy.dll
et Ivy.dll.
Après consultation des DLL, certaines Ivy.dll ne donnent rien, et
d'autres Ivy.dll donnent la liste des fonctions qui semblent être
IvyStart, IvyStop, etc. (alors qu'en Java, c'est juste des start,
stop,...). Si je ferais mon code, en prenant en compte ces "nouveaux"
noms de fonctions, :
- si je veux charger comIvy.dll, Windev me jette en disant que la
libraire n'est pas chargée,
- si je charge Ivy.dll, le chargement se passe bien comme avant, mais
sur le IvyStart (au lieu du start précédemment), Windev me jette avec
une erreur grave (voir ci-dessous).
Que faire... ?
JC
Je n'ai pas de code en VB.
J'ai utilisé DLL Export Viewer, mais c'est plus compliqué que ça. A
l'URL indiqué, on trouve des DLL différentes dont :
- Ivy.dll, Ivy DLL C#
- com-ivy.msi, Ivy COM component for Visual Basic for Applications
(0.1) , qui une fois exécuté fournit un répertoire avec une comIvy.dll
et Ivy.dll.
Après consultation des DLL, certaines Ivy.dll ne donnent rien, et
d'autres Ivy.dll donnent la liste des fonctions qui semblent être
IvyStart, IvyStop, etc. (alors qu'en Java, c'est juste des start,
stop,...). Si je ferais mon code, en prenant en compte ces "nouveaux"
noms de fonctions, :
- si je veux charger comIvy.dll, Windev me jette en disant que la
libraire n'est pas chargée,
- si je charge Ivy.dll, le chargement se passe bien comme avant, mais
sur le IvyStart (au lieu du start précédemment), Windev me jette avec
une erreur grave (voir ci-dessous).
Que faire... ?
JC
Je n'ai pas de code en VB.
J'ai utilisé DLL Export Viewer, mais c'est plus compliqué que ça. A
l'URL indiqué, on trouve des DLL différentes dont :
- Ivy.dll, Ivy DLL C#
- com-ivy.msi, Ivy COM component for Visual Basic for Applications
(0.1) , qui une fois exécuté fournit un répertoire avec une comIvy.dll
et Ivy.dll.
Après consultation des DLL, certaines Ivy.dll ne donnent rien, et
d'autres Ivy.dll donnent la liste des fonctions qui semblent être
IvyStart, IvyStop, etc. (alors qu'en Java, c'est juste des start,
stop,...). Si je ferais mon code, en prenant en compte ces "nouveaux"
noms de fonctions, :
- si je veux charger comIvy.dll, Windev me jette en disant que la
libraire n'est pas chargée,
- si je charge Ivy.dll, le chargement se passe bien comme avant, mais
sur le IvyStart (au lieu du start précédemment), Windev me jette avec
une erreur grave (voir ci-dessous).
Que faire... ?
JC
Désolé de revenir à la charge, mais je galère totalement...
Le souci est que la doc (http://www2.tls.cena.fr/products/ivy/
documentation/) est relative pauvre. Quand on regarde les exemples
Java et C++, on constate que les ordres ne sont pas les mêmes (dans un
langage on fera un ini, dans un autre on fera un create...), ni les
paramètres. Ensuite, pour les DLL (à http://www2.tls.cena.fr/products/ivy/download/),
il y a des versions C, C++, C#, des jar... le tout dans des versions
différentes.
1. J'ai donc essayé d'attaquer directement la DLL installée par "ivy-c+
+-1.1-win32.msi <http://www2.tls.cena.fr/products/ivy/download/
packages/ivy-c++-1.1-win32.msi>, (1.1)" . Mais quand je l'attaque avec
Windev, je me fais jeter car MSVCP60D.dll est introuvable. Or, ceci
n'a pas été installé par le MSI.
2. Ensuite, j'ai essayé d'attaquer directement la "Ivy.dll <http://
www2.tls.cena.fr/products/ivy/download/packages/Ivy.dll>, Ivy DLL C#".
Là, rien ne marche. IvyInit, Init, init, create,... je me fais jeter.
Mais je pense que là c'est normal, vu que c'est un objet COM (oui ?).
Donc j'essaie de créer un objet COM à partir de ça, et là, que faire ?
Windev demande la création d'objet COM et OLE de la façon suivante :
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation "XXXX" où XXXX est le
nom du serveur associé. Par exemple, j'utilise des objets OLE pour la
synthèse vocale, et ça donne :
objFileStream est un objet Automation dynamique
objVoice est un objet Automation dynamique
objFileStream = allouer un objet OLE("SAPI.SpFileStream")
objVoice = allouer un objet OLE("SAPI.SPVOICE")
objFileStream>>Format>>Type = 18
objFileStream>>Open(sFichierWav, 3, OLEFaux)
objVoice>>AudioOutputStream = objFileStream
...
donc le serveur ici est "SAPI.SpFileStream", "SAPI.SPVOICE"...
Mais pour notre cas avec Ivy, quel serveur utiliser avec la DLL C# ???
J'ai essayé "Ivy" ( "IvyBus"...même chose), ça ne marche pas. Le code
ci-dessous dit : L'objet automation 'Ivy' n'est pas installé sur votre
système.
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation "Ivy"
3. Ensuite, j'ai essayé d'attaquer la DLL installée depuis "com-
ivy.msi <http://www2.tls.cena.fr/products/ivy/download/packages/com-
ivy.msi>, Ivy COM component for Visual Basic for Applications (0.1) ".
Là, le répertoire créé contient un Ivy.dll et un comIvy.dll, et je
suppose que quelque chose a été installé par le MSI dans la base de
registre ou autre puisque le code ci-dessous semble fonctionner :
sNomDLL est une chaîne
sNomDLL = "C:Program FilesCenacomIvyIvy.dll" //.......... (si je
mets comIvy.dll ici, ça ne marche pas)
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation
"comIvy.Bus" //......... (ça semble marcher, donc le comIvy a été
installé par le MSI, mais où ? et sans MSI, on doit le faire à la
main ? comment ?)
objTestIvy>>Create("IvyScript", "IvyScript Ready") // j'ai
trouvé un fichier VBScript dans le répertoire créé, et j'ai repiqué le
code bêtement pour voir. Cette ligne s'exécute sans me jeter, mais
aucune idée du résultat produit (docu vide à ce sujet)
objTestIvy>>Bind( "(.*)", &maFonction) // par contre ici, je me
fais jeter. Nombre de paramètres incorrect. De plus, je fais ça à
l'aveuglette. Je sais qu'on doit déclarer un gestionnaire qui traitera
les messages déclarés ici. J'ai donc créé une fonction Windev
"maFonction", mais si je mets maFonction, Windev l'appelle directement
sur cette ligne (l'exécution à cet endroit ne devrait pas se
produire), et si je mets &maFonction (pour faire un pointeur dessus),
plantage.
objTestIvy>>Send( "ClockStart" ) // ne fait pas planter si
j'enlève la ligne précédente.
// Décharge la librairie
DéchargeDLL(HndlLib)
FIN
Mais avec cette DLL (objet COM ???), que dois-je faire et dans quel
ordre ? Create (params?), Init (?), Start(?), ... ? quand déclare-t-on
l'IP ? etc... aucune idée... mais si déjà j'arrivais à savoir comment
écrire les ordres + les passages de paramètres et les valeurs
retournées, je pense que je pourrais trouver des idées pour la
JC
Désolé de revenir à la charge, mais je galère totalement...
Le souci est que la doc (http://www2.tls.cena.fr/products/ivy/
documentation/) est relative pauvre. Quand on regarde les exemples
Java et C++, on constate que les ordres ne sont pas les mêmes (dans un
langage on fera un ini, dans un autre on fera un create...), ni les
paramètres. Ensuite, pour les DLL (à http://www2.tls.cena.fr/products/ivy/download/),
il y a des versions C, C++, C#, des jar... le tout dans des versions
différentes.
1. J'ai donc essayé d'attaquer directement la DLL installée par "ivy-c+
+-1.1-win32.msi <http://www2.tls.cena.fr/products/ivy/download/
packages/ivy-c++-1.1-win32.msi>, (1.1)" . Mais quand je l'attaque avec
Windev, je me fais jeter car MSVCP60D.dll est introuvable. Or, ceci
n'a pas été installé par le MSI.
2. Ensuite, j'ai essayé d'attaquer directement la "Ivy.dll <http://
www2.tls.cena.fr/products/ivy/download/packages/Ivy.dll>, Ivy DLL C#".
Là, rien ne marche. IvyInit, Init, init, create,... je me fais jeter.
Mais je pense que là c'est normal, vu que c'est un objet COM (oui ?).
Donc j'essaie de créer un objet COM à partir de ça, et là, que faire ?
Windev demande la création d'objet COM et OLE de la façon suivante :
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation "XXXX" où XXXX est le
nom du serveur associé. Par exemple, j'utilise des objets OLE pour la
synthèse vocale, et ça donne :
objFileStream est un objet Automation dynamique
objVoice est un objet Automation dynamique
objFileStream = allouer un objet OLE("SAPI.SpFileStream")
objVoice = allouer un objet OLE("SAPI.SPVOICE")
objFileStream>>Format>>Type = 18
objFileStream>>Open(sFichierWav, 3, OLEFaux)
objVoice>>AudioOutputStream = objFileStream
...
donc le serveur ici est "SAPI.SpFileStream", "SAPI.SPVOICE"...
Mais pour notre cas avec Ivy, quel serveur utiliser avec la DLL C# ???
J'ai essayé "Ivy" ( "IvyBus"...même chose), ça ne marche pas. Le code
ci-dessous dit : L'objet automation 'Ivy' n'est pas installé sur votre
système.
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation "Ivy"
3. Ensuite, j'ai essayé d'attaquer la DLL installée depuis "com-
ivy.msi <http://www2.tls.cena.fr/products/ivy/download/packages/com-
ivy.msi>, Ivy COM component for Visual Basic for Applications (0.1) ".
Là, le répertoire créé contient un Ivy.dll et un comIvy.dll, et je
suppose que quelque chose a été installé par le MSI dans la base de
registre ou autre puisque le code ci-dessous semble fonctionner :
sNomDLL est une chaîne
sNomDLL = "C:Program FilesCenacomIvyIvy.dll" //.......... (si je
mets comIvy.dll ici, ça ne marche pas)
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation
"comIvy.Bus" //......... (ça semble marcher, donc le comIvy a été
installé par le MSI, mais où ? et sans MSI, on doit le faire à la
main ? comment ?)
objTestIvy>>Create("IvyScript", "IvyScript Ready") // j'ai
trouvé un fichier VBScript dans le répertoire créé, et j'ai repiqué le
code bêtement pour voir. Cette ligne s'exécute sans me jeter, mais
aucune idée du résultat produit (docu vide à ce sujet)
objTestIvy>>Bind( "(.*)", &maFonction) // par contre ici, je me
fais jeter. Nombre de paramètres incorrect. De plus, je fais ça à
l'aveuglette. Je sais qu'on doit déclarer un gestionnaire qui traitera
les messages déclarés ici. J'ai donc créé une fonction Windev
"maFonction", mais si je mets maFonction, Windev l'appelle directement
sur cette ligne (l'exécution à cet endroit ne devrait pas se
produire), et si je mets &maFonction (pour faire un pointeur dessus),
plantage.
objTestIvy>>Send( "ClockStart" ) // ne fait pas planter si
j'enlève la ligne précédente.
// Décharge la librairie
DéchargeDLL(HndlLib)
FIN
Mais avec cette DLL (objet COM ???), que dois-je faire et dans quel
ordre ? Create (params?), Init (?), Start(?), ... ? quand déclare-t-on
l'IP ? etc... aucune idée... mais si déjà j'arrivais à savoir comment
écrire les ordres + les passages de paramètres et les valeurs
retournées, je pense que je pourrais trouver des idées pour la
JC
Désolé de revenir à la charge, mais je galère totalement...
Le souci est que la doc (http://www2.tls.cena.fr/products/ivy/
documentation/) est relative pauvre. Quand on regarde les exemples
Java et C++, on constate que les ordres ne sont pas les mêmes (dans un
langage on fera un ini, dans un autre on fera un create...), ni les
paramètres. Ensuite, pour les DLL (à http://www2.tls.cena.fr/products/ivy/download/),
il y a des versions C, C++, C#, des jar... le tout dans des versions
différentes.
1. J'ai donc essayé d'attaquer directement la DLL installée par "ivy-c+
+-1.1-win32.msi <http://www2.tls.cena.fr/products/ivy/download/
packages/ivy-c++-1.1-win32.msi>, (1.1)" . Mais quand je l'attaque avec
Windev, je me fais jeter car MSVCP60D.dll est introuvable. Or, ceci
n'a pas été installé par le MSI.
2. Ensuite, j'ai essayé d'attaquer directement la "Ivy.dll <http://
www2.tls.cena.fr/products/ivy/download/packages/Ivy.dll>, Ivy DLL C#".
Là, rien ne marche. IvyInit, Init, init, create,... je me fais jeter.
Mais je pense que là c'est normal, vu que c'est un objet COM (oui ?).
Donc j'essaie de créer un objet COM à partir de ça, et là, que faire ?
Windev demande la création d'objet COM et OLE de la façon suivante :
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation "XXXX" où XXXX est le
nom du serveur associé. Par exemple, j'utilise des objets OLE pour la
synthèse vocale, et ça donne :
objFileStream est un objet Automation dynamique
objVoice est un objet Automation dynamique
objFileStream = allouer un objet OLE("SAPI.SpFileStream")
objVoice = allouer un objet OLE("SAPI.SPVOICE")
objFileStream>>Format>>Type = 18
objFileStream>>Open(sFichierWav, 3, OLEFaux)
objVoice>>AudioOutputStream = objFileStream
...
donc le serveur ici est "SAPI.SpFileStream", "SAPI.SPVOICE"...
Mais pour notre cas avec Ivy, quel serveur utiliser avec la DLL C# ???
J'ai essayé "Ivy" ( "IvyBus"...même chose), ça ne marche pas. Le code
ci-dessous dit : L'objet automation 'Ivy' n'est pas installé sur votre
système.
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation "Ivy"
3. Ensuite, j'ai essayé d'attaquer la DLL installée depuis "com-
ivy.msi <http://www2.tls.cena.fr/products/ivy/download/packages/com-
ivy.msi>, Ivy COM component for Visual Basic for Applications (0.1) ".
Là, le répertoire créé contient un Ivy.dll et un comIvy.dll, et je
suppose que quelque chose a été installé par le MSI dans la base de
registre ou autre puisque le code ci-dessous semble fonctionner :
sNomDLL est une chaîne
sNomDLL = "C:Program FilesCenacomIvyIvy.dll" //.......... (si je
mets comIvy.dll ici, ça ne marche pas)
HndlLib=ChargeDLL(sNomDLL)
SI HndlLib=0 ALORS
Info("La Librairie n'est pas chargée")
SINON
Info("La Librairie est chargée")
objTestIvy est un objet Automation dynamique
objTestIvy = allouer un objet Automation
"comIvy.Bus" //......... (ça semble marcher, donc le comIvy a été
installé par le MSI, mais où ? et sans MSI, on doit le faire à la
main ? comment ?)
objTestIvy>>Create("IvyScript", "IvyScript Ready") // j'ai
trouvé un fichier VBScript dans le répertoire créé, et j'ai repiqué le
code bêtement pour voir. Cette ligne s'exécute sans me jeter, mais
aucune idée du résultat produit (docu vide à ce sujet)
objTestIvy>>Bind( "(.*)", &maFonction) // par contre ici, je me
fais jeter. Nombre de paramètres incorrect. De plus, je fais ça à
l'aveuglette. Je sais qu'on doit déclarer un gestionnaire qui traitera
les messages déclarés ici. J'ai donc créé une fonction Windev
"maFonction", mais si je mets maFonction, Windev l'appelle directement
sur cette ligne (l'exécution à cet endroit ne devrait pas se
produire), et si je mets &maFonction (pour faire un pointeur dessus),
plantage.
objTestIvy>>Send( "ClockStart" ) // ne fait pas planter si
j'enlève la ligne précédente.
// Décharge la librairie
DéchargeDLL(HndlLib)
FIN
Mais avec cette DLL (objet COM ???), que dois-je faire et dans quel
ordre ? Create (params?), Init (?), Start(?), ... ? quand déclare-t-on
l'IP ? etc... aucune idée... mais si déjà j'arrivais à savoir comment
écrire les ordres + les passages de paramètres et les valeurs
retournées, je pense que je pourrais trouver des idées pour la
JC