2012-03-01 54 views
5

Quiero que mi aplicación de Word pase al primer plano cuando la automatización se haya completado.Cómo obtengo el Hwnd/Id de proceso para una aplicación de Word y configúralo como ventana frontal

El equivalente en Excel es sencillo - el objeto Application de Excel tiene una propiedad .Hwnd que se puede utilizar en conjunción con la API de Windows:

SetForegroundWindow((IntPtr)excelApp.Hwnd); 

Sin embargo la aplicación Word no tiene una propiedad .Hwnd .

He intentado usar Activar() en esta secuencia:

wordDoc.Activate(); 
wordApp.Activate(); 

pero esto no funciona.

He echado un vistazo a la búsqueda del proceso utilizando el nombre de la aplicación, pero podría haber más de una copia de Word ejecutándose.

Gracias

Joe

+0

Bueno, hay una publicación en SO que lo describe. http://stackoverflow.com/questions/814936/get-pid-from-word-applicationclass –

+1

Gracias Greco - Vi esa publicación, esperaba mantener el código por debajo de la cuenta ... –

Respuesta

4

Puede que tenga que repetir el processArray más allá de la primera. Con la palabra 2010 solo se muestra un WinWord en el administrador de tareas sin importar cuántas instancias estén abiertas.

 System.Diagnostics.Process[] processArray = System.Diagnostics.Process.GetProcessesByName("WinWord"); 
     System.Diagnostics.Process word = processArray[0]; 
     SetForegroundWindow(word.MainWindowHandle); 
+0

+1 por la información, pero Tengo que intervenir: eso definitivamente no es cierto acerca de Word 2010+, solo que genera un proceso de "WinWord". Simplemente llamar "nueva Aplicación (...)" dos veces es todo lo que se necesita. – BrainSlugs83

Cuestiones relacionadas