J'aurais aimé savoir s'il est possible d'appeler une fonction dans VBScript à partir de C#. Laissez-moi essayer de clarifier. J'utilise une application (Quick Test Professional ou "QTP") qui automatise une autre application, principalement en utilisant VBScript. Il est possible, via un modèle d'ajout, d'étendre la fonctionnalité de test en écrivant des compléments à l'application de test (QTP) qui sont des assemblys .NET. Le workflow de base est que les tests VBScript automatisent l'application de test et peuvent appeler des méthodes sur une classe dans l'assembly d'extension d'extension pour effectuer des opérations plus complexes. Cette partie fonctionne bien.Rappel à VBScript du C#
Ce que je voudrais savoir, c'est s'il est possible que mon code C# (dans l'extension add in assembly) rappelle à une fonction dans le VBScript. Je ne pense pas que le framework d'application de test (QTP) supporte explicitement cela, donc je me demande s'il y a moyen de le faire en utilisant des techniques d'interopérabilité standard. Je pensais à l'aide de GetRef() pour obtenir une référence à la fonction VBScript d'intérêt, en passant cela comme un paramètre à une méthode que j'appelle dans l'addin d'extension (je suppose que je rencontrerais des problèmes de marshaling même à ce point?) puis dans le code C# de mon extensibilité ajouter, en quelque sorte appeler une méthode sur cet objet; c'est là que je suis complètement perdu (puisque je ne sais pas comment le faire sans les informations de type nécessaires normalement utilisées en réflexion).
Je pense que ce n'est peut-être pas possible, mais j'aimerais une confirmation si c'est le cas.
Merci!
Je ne sais pas comment VBScript appelle le code C#. Si je devais deviner, pense que tu as raison; il est probable qu'il se base sur QTP et QTP appelle le code C#. Idéalement, mon code C# rappelait la méthode VBScript en réponse à un événement déclenché dans le contrôle auquel le code C# était abonné. –
Oui, ça ne va vraiment pas marcher, d'après ce que je peux voir.VBScript est un langage de script. Il ne comprend pas les événements, ou multi-threading, et je suis sûr qu'il n'a aucune idée qu'il pourrait être appelé de manière asynchrone. Considérez: pourriez-vous faire cela avec juste VBScript pur? Un script VBSCript appelle-t-il une fonction VBScript qui "rappelle" l'original plus tard? Je ne vois aucun moyen de le faire. –
Oui, VBScript comprend les événements de différentes manières, en fonction de l'application d'hébergement et du moteur de script utilisé; hythlodayr fait référence à quelques pages Web ci-dessous. (La première référence est la plus appropriée). –