¿Cómo puedo usar C# programáticamente para obtener una lista de aplicaciones en ejecución (escritorio)? Piensa en la lista de aplicaciones del Administrador de tareas de Windows.Mostrar la lista de aplicaciones en ejecución del escritorio usando C#
Respuesta
Puede usar el Process.GetProcesses
method para proporcionar información sobre todos los procesos que se están ejecutando actualmente en su computadora.
Sin embargo, esto muestra todos los procesos en ejecución, incluidos los que no se muestran necesariamente en la barra de tareas. Así que lo que necesita hacer es filtrar aquellos procesos que tienen un vacío MainWindowTitle
.El anteriormente ligado a la documentación explica por qué esto funciona:
Un proceso ha asociado una ventana principal con ella sólo si el proceso tiene una interfaz gráfica . Si el proceso asociado no tiene una ventana principal (para que MainWindowHandle sea cero), MainWindowTitle es una cadena vacía ("").
Por lo tanto, se podría usar algo como el siguiente código, que se imprimirá (a una ventana de la consola) una lista de todas las aplicaciones actualmente en ejecución que son visibles en la barra de tareas:
Process[] processes = Process.GetProcesses();
foreach (var proc in processes)
{
if (!string.IsNullOrEmpty(proc.MainWindowTitle))
Console.WriteLine(proc.MainWindowTitle);
}
- 1. C# Aplicaciones de escritorio?
- 2. Ejecutando "Mostrar escritorio" desde C++
- 3. ¿Cómo obtener la lista de aplicaciones en ejecución?
- 4. Cómo obtener la lista de aplicaciones en ejecución usando PowerShell o VBScript
- 5. JavaScript aplicaciones de escritorio?
- 6. Aplicaciones de escritorio PHP
- 7. la línea delgada entre aplicaciones web y aplicaciones de escritorio
- 8. HTML/CSS/JS en aplicaciones de escritorio
- 9. Aplicaciones de escritorio: marcos arquitectónicos?
- 10. Obtener la lista de procesos en ejecución (Visual C++)
- 11. Diseño de aplicaciones de escritorio
- 12. ¿OAuth para aplicaciones de escritorio?
- 13. Interactuar con otras aplicaciones de escritorio en Windows usando C# winforms
- 14. Python en desarrollo de aplicaciones de escritorio
- 15. Enlace del icono de escritorio
- 16. iOS/Android sincronización con Delphi/C# aplicaciones de escritorio
- 17. Aplicaciones de navegador WPF vs aplicaciones de escritorio WPF
- 18. Aplicaciones de escritorio multiplataforma: ¿un enfoque?
- 19. Orden de ejecución en la lista de inicialización del constructor
- 20. ¿Cómo obtener una lista de todas las NSWindow abiertas desde todas las aplicaciones en ejecución?
- 21. ¿Alguien escribe aplicaciones de escritorio con .NET?
- 22. ¿Cómo hacer aplicaciones de escritorio Java estándar de la industria?
- 23. Obtener la lista de aplicaciones en ejecución ordenados por último uso
- 24. Gui de Ruby para aplicaciones de escritorio
- 25. Php mysql para aplicaciones de escritorio
- 26. Obtener la ejecución del nombre del ensamblado usando la reflexión
- 27. ¿Cómo encontrar que las aplicaciones en ejecución están en estado minimizado usando java?
- 28. mostrar la lista de opciones en elisp
- 29. Cómo mostrar una lista usando ViewBag
- 30. ¿Desvelar las aplicaciones de escritorio de Java?
+1: Buena respuesta. –
Pido disculpas por este comentario de dos años después, pero estoy buscando una solución similar, y quería mencionar que la solución anterior no funciona (AFAIK) en casos como WORD o ACRO-READER que pueden tener más de un documento abierto en el escritorio. En ese caso, parece que solo la ventana superior se muestra como una aplicación que utiliza el método anterior. Si me equivoco, me disculpo, pero suponiendo que tengo razón, me gustaría saber cómo enumerar todas las ventanas, incluso si provienen del mismo proceso subyacente (como acrord o word). –
@Ed. Sí, esto enumera los procesos, pero esas aplicaciones solo ejecutan un solo proceso. No tiene importancia que el proceso administre múltiples ventanas de nivel superior. Puede enumerar ventanas de nivel superior utilizando la función ['EnumWindows'] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms633497.aspx). Llame a esta función y especifique un puntero a una función de devolución de llamada. La función de devolución de llamada se llamará una vez para cada ventana de nivel superior en la pantalla. –