EXECUTER UNE COMMANDE EN MODE RUN

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 14 mai 2004 à 20:35
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 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.

https://codes-sources.commentcamarche.net/source/22816-executer-une-commande-en-mode-run

sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 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és 13 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 25 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és 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 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és 13 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 25 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és 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 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és 1016 Date d'inscription samedi 22 mars 2003 Statut Membre Dernière intervention 24 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és 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 avril 2006
15 mai 2004 à 11:50
Ah oui j'oubliais....pour thierrydelepine

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
sibi12 Messages postés 337 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 15 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és 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
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és 521 Date d'inscription mardi 24 décembre 2002 Statut Membre Dernière intervention 11 septembre 2008 6
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és 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
14 mai 2004 à 21:39
Bonne astuce...
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
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 !!!

Cordialement

CanisLupus
Rejoignez-nous