2010-05-07 5 views
0

Dans mon WinForms application d'interagir avec Excel par la com interop,Excel Interop: Restauration fenêtre réduite

J'essaie de joindre à un processus Excel existant si elle existe. Obtenir l'objet semble bien fonctionner, mais si l'application Excel est minimisée (ce qui est assez probable dans mon cas d'utilisation), je ne parviens pas à restaurer la fenêtre et à l'amener au premier plan.

J'ai essayé les déclarations suivantes:

try 
    app = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); 
catch (Exception) { /* ignore */ } 

if (app == null) 
{ 
    app = new Excel.Application(); 
    app.Visible = true; 
} 

if (app.ActiveWindow.WindowState == Excel.XlWindowState.xlMinimized) 
    app.ActiveWindow.WindowState = Excel.XlWindowState.xlNormal; 

wb = ... 

wb.Activate(); 

Aucun d'entre eux avaient un effet. Comment puis-je y parvenir?

(S'il vous plaît noter: Mon problème concerne le cas où il est une instance existante, de sorte que le « visible = true » est pas nécessaire et this thread ne s'applique pas.)

+0

http://stackoverflow.com/questions/19118881/force-to-bring-excel-window-to-the-front – Ryan

Répondre

1

Vous voulez app.WindowState = xlNormal que app.ActiveWindow est la feuille en cours et non la fenêtre principale des instances d'application.

+0

Alex, ça ne pouvait pas être plus simple! Je me demande comment je n'ai pas pu le trouver moi-même, puisque j'ai d'abord cherché une méthode appropriée dans la classe d'application ... (probablement je cherchais une méthode "Activer()") – chiccodoro

Questions connexes