cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 2006
-
14 mai 2004 à 20:35
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006
-
14 mars 2006 à 18:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 14 mars 2006 à 18:26
C'est sans doute parce que un module n'est pas un objet (je veux dire que tu ne sais en instancier)
As-tu essayer avec un module de classe pour encapsuler tout ce dont tu as besoin dans tes scripts ? Ça devrait marcher et c'est sans doute plus propre.
keops31
Messages postés13Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention25 avril 2006 14 mars 2006 à 15:30
OK merci çà marche en effet!
Mais j'ai encore un problème : comment peut-on appeler une méthode/fonction VB depuis le controle MSscript qui apparemment ne reconnaît pas le code VB ? J'ai vu dans ton projet sur les polynomes que tu utilisais "Scp.AddObject "Interface", Me" puis lance une fonction VB avec "Scp.ExecuteStatement ("Interface.Script(" & Fct & ")")". J'aimerais faire de même mais le compilo ne veut pas ajouter 'Me' qui dans mon cas est un module et non un formulaire (c'est un pg batch tout simple). As-tu la solution ?
Merci d'avance
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 13 mars 2006 à 18:07
pfiouuu... ce message me donne un coup de vieux lol.
Je suis depuis passé sur linux donc je vais essayer de me souvenir... En principe msscript est un ActiveX donc tu n'as pas a chercher de point d'entrée VB gère ça tout seul comme un grand. Tu ajoute ton ocx dans ton projet (Projet => composant si mes souvenir son bon. Sinon clique droit sur la barre d'outils et Ajout/Suppression de composant un truc du style). Ensuite tu pourras mettre un controle MSScript sur ta form et l'utiliser comme tu veux.
Si tu va voir dans mes sources sur ce site, il y en a une intitulé "Tracer des graphique de fonction du 4eme degré" (ou quelque chose comme ça) qui utilise ce composant tu peux t'en inspirer (oui je sais le code n'est pas tres propres :( )
J'espère que ça pourra t'aider
keops31
Messages postés13Date d'inscriptionmercredi 16 juin 2004StatutMembreDernière intervention25 avril 2006 13 mars 2006 à 17:04
Salut sibi12,
Comme j'ai également des problèmes avec vba6.dll qui me génère des bugs, je voudrais savoir comment tu as réussi la manip avec le composant msscript.ocx.
En effet, je l'ai essayé à la place de vba6.dll en renseignant le nom du fichier dans le code VB mais le compilateur me dit que "le point d'entrée EbExecuteLine est introuvable...". Quel point d'entrée utilises-tu pour exécuter une chaîne avec msscript.ocx ? Si tu as un bout de code, je suis preneur!
Merci beaucoup
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 3 sept. 2004 à 12:07
Oui c'est juste j'utilise l'ocx. J'utilisai auparavant la dll j'ai du oublier de l'enlever. quand je l'ai remplacer par l'ocx.
Pour info, la dll et l'ocx s'utilise exactement de la même manière mise à part la declaration evidemment. Il faut utiliser le mot-clé WithEvents pour avoir accès aux evenement si tu utilise la dll.
je l'utilise dans la fonction CalcFct mais la façon dont je l'utilise peut être assez compliquer a saisir.
En réalité je rajoute un module au ScriptControl que je nomme Interface dans le Form_Load puis le reste se passe dans le CalcFct qui demande au control de renvoyer le resultat dans la fonction Script.
cs_liquide
Messages postés1016Date d'inscriptionsamedi 22 mars 2003StatutMembreDernière intervention24 juin 2008 3 sept. 2004 à 10:16
Sibi, j'ai charger ta source dans ton post du dessus car tu dis utiliser la DLL
Je vois bien dans ta source , en référence que tu as déclaré la dll, mais dans ton programme j'en n'ai pas vu l'utilisation !!
de ce que j'ai pu comprendre, tu utilises l'activex et pas une dll (MSSCRIPT.DLL).
D'ailleur je l'ai enlevé et ca fonctionne aussi, puis j'ai meme enlevé dans la référence, le fichier .oca .
Explique moi dans ta source, en quoi ces 2 fichiers sont nécessaires, car j'ai du rater une étape. Merci
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 15 mai 2004 à 11:50
sibi12
Messages postés337Date d'inscriptionjeudi 19 décembre 2002StatutMembreDernière intervention15 avril 2006 15 mai 2004 à 11:47
La dll vba6.dll se trouve dans le repertoire de VB...mais ce n'est pas une dll COM puisque tu declare une API pour la fonction EbExecuteLine... donc il suffit de rajouter la dll ds le repertoire de l'exe...
Mais chez moi ca bogue!!!!
si quelqu'un pouvais essayer...
d'ailleur si on regarde la DLL de plus pres on peu voir qu'elle contien pas mal de fonction tres interressante... c-a-d a peu pres tte les fonctions de VB !!!!!
faudrait faire une petite enquête sur cette DLL...
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 20086 15 mai 2004 à 01:14
J'apporte une modif a mon post du dessus il faut lire pour la derniere ligne de l'exemple :
ScriptControl1.AddCode "If Genie.Active <> 1 Then Genie.MoveTo 0, 300"
j'ai ajoute les guillemets puisque c'est un string, la derniere ligne aurait pu etre : ScriptControl1.AddCode Text1.Text
NB: avec MSSCRIPT.ocx cela marche aussi en mode compilé
thierrydelepine
Messages postés521Date d'inscriptionmardi 24 décembre 2002StatutMembreDernière intervention11 septembre 20086 14 mai 2004 à 23:24
excellent,
question peut on executer une ligne de code comportant un objet ?
voici une autre solution avec Microsoft Script Control 1 (MSSCRIPT.ocx) pour executer du code a partir d'un string.
exemple avec l'objet Genie du composant Agent:
ScriptControl1.Language = "VBScript"
ScriptControl1.Reset
ScriptControl1.AddObject "genie", Genie, True
ScriptControl1.AddCode If Genie.Active <> 1 Then Genie.MoveTo 0, 300
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 14 mai 2004 à 21:39
Bonne astuce...
cs_CanisLupus
Messages postés3757Date d'inscriptionmardi 23 septembre 2003StatutMembreDernière intervention13 mars 200621 14 mai 2004 à 20:35
Salut jack,
Merci pour ce code, je ne le cherchais pas vraiment mais ça m'ouvre des horizons car ce genre de truc je sais déjà le faire en c/c++ (en compilé) et j'avais des prob de traductions c vers vb sur ce plan. C top !!!
14 mars 2006 à 18:26
As-tu essayer avec un module de classe pour encapsuler tout ce dont tu as besoin dans tes scripts ? Ça devrait marcher et c'est sans doute plus propre.
14 mars 2006 à 15:30
Mais j'ai encore un problème : comment peut-on appeler une méthode/fonction VB depuis le controle MSscript qui apparemment ne reconnaît pas le code VB ? J'ai vu dans ton projet sur les polynomes que tu utilisais "Scp.AddObject "Interface", Me" puis lance une fonction VB avec "Scp.ExecuteStatement ("Interface.Script(" & Fct & ")")". J'aimerais faire de même mais le compilo ne veut pas ajouter 'Me' qui dans mon cas est un module et non un formulaire (c'est un pg batch tout simple). As-tu la solution ?
Merci d'avance
13 mars 2006 à 18:07
Je suis depuis passé sur linux donc je vais essayer de me souvenir... En principe msscript est un ActiveX donc tu n'as pas a chercher de point d'entrée VB gère ça tout seul comme un grand. Tu ajoute ton ocx dans ton projet (Projet => composant si mes souvenir son bon. Sinon clique droit sur la barre d'outils et Ajout/Suppression de composant un truc du style). Ensuite tu pourras mettre un controle MSScript sur ta form et l'utiliser comme tu veux.
Si tu va voir dans mes sources sur ce site, il y en a une intitulé "Tracer des graphique de fonction du 4eme degré" (ou quelque chose comme ça) qui utilise ce composant tu peux t'en inspirer (oui je sais le code n'est pas tres propres :( )
J'espère que ça pourra t'aider
13 mars 2006 à 17:04
Comme j'ai également des problèmes avec vba6.dll qui me génère des bugs, je voudrais savoir comment tu as réussi la manip avec le composant msscript.ocx.
En effet, je l'ai essayé à la place de vba6.dll en renseignant le nom du fichier dans le code VB mais le compilateur me dit que "le point d'entrée EbExecuteLine est introuvable...". Quel point d'entrée utilises-tu pour exécuter une chaîne avec msscript.ocx ? Si tu as un bout de code, je suis preneur!
Merci beaucoup
3 sept. 2004 à 12:07
Pour info, la dll et l'ocx s'utilise exactement de la même manière mise à part la declaration evidemment. Il faut utiliser le mot-clé WithEvents pour avoir accès aux evenement si tu utilise la dll.
je l'utilise dans la fonction CalcFct mais la façon dont je l'utilise peut être assez compliquer a saisir.
En réalité je rajoute un module au ScriptControl que je nomme Interface dans le Form_Load puis le reste se passe dans le CalcFct qui demande au control de renvoyer le resultat dans la fonction Script.
3 sept. 2004 à 10:16
Je vois bien dans ta source , en référence que tu as déclaré la dll, mais dans ton programme j'en n'ai pas vu l'utilisation !!
de ce que j'ai pu comprendre, tu utilises l'activex et pas une dll (MSSCRIPT.DLL).
D'ailleur je l'ai enlevé et ca fonctionne aussi, puis j'ai meme enlevé dans la référence, le fichier .oca .
Explique moi dans ta source, en quoi ces 2 fichiers sont nécessaires, car j'ai du rater une étape. Merci
15 mai 2004 à 11:50
Il existe effectivement la DLL MSSCRIPT pour un petit exemple d'utilisation vous pouvez allez voir ma source : http://www.vbfrance.com/code.aspx?ID=6453
15 mai 2004 à 11:47
Mais chez moi ca bogue!!!!
si quelqu'un pouvais essayer...
d'ailleur si on regarde la DLL de plus pres on peu voir qu'elle contien pas mal de fonction tres interressante... c-a-d a peu pres tte les fonctions de VB !!!!!
faudrait faire une petite enquête sur cette DLL...
15 mai 2004 à 01:14
ScriptControl1.AddCode "If Genie.Active <> 1 Then Genie.MoveTo 0, 300"
j'ai ajoute les guillemets puisque c'est un string, la derniere ligne aurait pu etre : ScriptControl1.AddCode Text1.Text
NB: avec MSSCRIPT.ocx cela marche aussi en mode compilé
14 mai 2004 à 23:24
question peut on executer une ligne de code comportant un objet ?
voici une autre solution avec Microsoft Script Control 1 (MSSCRIPT.ocx) pour executer du code a partir d'un string.
exemple avec l'objet Genie du composant Agent:
ScriptControl1.Language = "VBScript"
ScriptControl1.Reset
ScriptControl1.AddObject "genie", Genie, True
ScriptControl1.AddCode If Genie.Active <> 1 Then Genie.MoveTo 0, 300
14 mai 2004 à 21:39
14 mai 2004 à 20:35
Merci pour ce code, je ne le cherchais pas vraiment mais ça m'ouvre des horizons car ce genre de truc je sais déjà le faire en c/c++ (en compilé) et j'avais des prob de traductions c vers vb sur ce plan. C top !!!
Cordialement
CanisLupus