2010-09-22 8 views
9

Le code VB6 suivant de VB6 se connecte à un logiciel tiers et force une connexion avec le nom d'utilisateur admin et mot de passe:C# équivalent de GetObject

Set obj = GetObject(, "workspace.application") 
obj.System.FixLogin strAdminUsername, strAdminPassword 

Je voulais faire la même tâche en C#, mais comme très développeur C# vert (environ 3 mois d'expérience) Je ne sais pas comment faire. J'ai passé une journée très frustrante sur Google mais je n'ai rien trouvé qui corresponde à la facture (la plupart je ne comprenais même pas). Je sais encore moins sur VB6 que sur C#, mais VB6 le rend si facile.

Je ne peux pas non plus tester la connexion à ce logiciel tiers jusqu'à ce que je l'implémente dans notre environnement de contrôle qualité. Donc, je voudrais tester la fonctionnalité avec une application simple, Notepad par exemple. Quelle fonction/méthode puis-je appeler sur le bloc-notes au lieu de "FixLogin"?

Je serais très reconnaissant si quelqu'un pouvait m'aider avec ce problème.

Cordialement, Steve.

Répondre

0

GetObject renvoie un contrôle COM. Vous devrez travailler avec COM Interop pour le faire en C#. (Ce n'est pas trivial.)

16

Même si vous travaillez avec C#, vous pouvez utiliser toutes les classes et méthodes fournies par Vb.Net, y compris GetObject.

Ajoutez simplement une référence au composant .NET "Microsoft.VisualBasic".

Une fois que vous avez ajouté la référence, vous pouvez appeler Microsoft.VisualBasic.Interaction.CreateObject() ou Microsoft.VisualBasic.Interaction.GetObject()

+0

+1, façon de le faire il. CreateObject() fait un joli travail non trivial. –

9
+0

Le désir avec GetObject est d'obtenir un objet instancié en mémoire s'il existe; que cette solution fait. Si elle renvoie null alors vous pouvez utiliser new pour instancier. C'est la meilleure solution à la question, car elle gère tous les aspects du comportement. –