[C#/VB.NET] [Résolu] Equivalent de GetObject ?

Equivalent de GetObject ? [C#/VB.NET] [Résolu] - C#/.NET managed - Programmation

Marsh Posté le 18-02-2005 à 08:50:46    

En VB.NET(et en VB tout court d'ailleurs), si je veux récupérer une instance, par exemple d'Excel, qui est déjà en train de tourner, on peut utiliser  
 
GetObject(,"Excel.Application" )
 
et si elle échoue (pas d'Excel en train de tourner), on se rabat alors sur  
 
CreateObject("Excel.Application" )
 
Comment ferait-on en C# pour récupérer ainsi une instance d'Excel déjà ouverte ?
 
Merci
 
Laurent


Message édité par lohworm le 02-03-2005 à 09:26:45
Reply

Marsh Posté le 18-02-2005 à 08:50:46   

Reply

Marsh Posté le 21-02-2005 à 15:27:31    

Personne n'a donc eu l'occasion de faire cette manip (le GetObject en C#)?

Reply

Marsh Posté le 01-03-2005 à 09:28:25    

Bon, OK, j'avais mal cherché sur Google...
Avec les bons mots clés, j'ai trouvé une réponse ici :
http://www.dotnet247.com/247refere [...] 31124.aspx
 
Je n'ai pas encore testé...
Quand ce sera fait je viendrai coller un bout de code ici...

Reply

Marsh Posté le 02-03-2005 à 09:25:45    

Alors, c'est encore plus simple que les exemples trouvés sur le net car le cast avec "as" marche bien, donc pas besoin de wrapper (et surtout je n'ai pas réussi à adapter et faire fonctionner sur Excel les exemples données pour Visio)
 
Exemple :

Code :
  1. Excel.Application xlApp;
  2. xlApp = System.Runtime.InteropServices.Marshal.GetActiveObject("Excel.Application" ) as Excel.Application;
  3. xlApp.Visible=true;
  4. MessageBox.Show(xlApp.Workbooks.Count.ToString());

Reply

Marsh Posté le 02-03-2005 à 09:32:22    

et tant que j'y suis, pour info et pour l'anecdote, une décompilation en C# d'un exe VB.NET qui utilisait le GetObject donne ceci :  
 

Code :
  1. Excel.Application xlApp;
  2. xlApp = (Microsoft.VisualBasic.Interaction.GetObject(null, "Excel.Application" ) as Excel.Application);

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed