¿Cómo puedo llevar una ventana de aplicación de consola al frente en C# (especialmente cuando se ejecuta el depurador de Visual Studio)?traer una ventana de consola al frente en C#
Respuesta
Es hacky, es horrible, pero funciona para mí (gracias, pinvoke.net!):
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Threading;
public class Test
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
[DllImport("user32.dll", EntryPoint="FindWindow", SetLastError = true)]
static extern IntPtr FindWindowByCaption(IntPtr zeroOnly, string lpWindowName);
public static void Main()
{
string originalTitle = Console.Title;
string uniqueTitle = Guid.NewGuid().ToString();
Console.Title = uniqueTitle;
Thread.Sleep(50);
IntPtr handle = FindWindowByCaption(IntPtr.Zero, uniqueTitle);
if (handle == IntPtr.Zero)
{
Console.WriteLine("Oops, cant find main window.");
return;
}
Console.Title = originalTitle;
while (true)
{
Thread.Sleep(3000);
Console.WriteLine(SetForegroundWindow(handle));
}
}
}
Por favor, nunca agregue esto a su código solo para que aparezca en la parte superior cuando se depura. – tvanfosson
@tv - Tal vez podría dar una explicación a su declaración absoluta. Personalmente, creo que este es un uso legítimo y recomendado de las funciones de administración de ventanas. No es el mejor enfoque DRY pero con un poco de refactorización es una práctica común en el desarrollo de aplicaciones win32. No es Hackey, es cómo mueves las ventanas alrededor del escritorio. –
solo para agregar, si busca ejecutar este código solo cuando esté en el depurador de Visual Studio, puede usar lo siguiente: if (Debugger.IsAttached == true) {...} –
conseguir dos monitores (por lo menos) y VisualStudio abierta en el monitor secundario. Cuando ejecuta su aplicación desde VisualStudio, se iniciará de manera predeterminada en el monitor principal. Como es la última aplicación que se abre, comienza en la parte superior y cambiar a VisualStudio no la afecta. Funciona para mí de todos modos.
Si aún no tiene un segundo monitor, en mi humilde opinión, debería hacerlo.
Esto es lo que haría.
[DllImport("kernel32.dll", ExactSpelling = true)]
public static extern IntPtr GetConsoleWindow();
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool SetForegroundWindow(IntPtr hWnd);
public void BringConsoleToFront()
{
SetForegroundWindow(GetConsoleWindow());
}
Toda una respuesta tardía, pero he usado el siguiente trabajo en torno a:
Si está ejecutando una aplicación de consola con Windows Forms, y quiere llevar la consola a la parte delantera de la forma, hay no es una manera sensata de hacer esto, como hemos visto anteriormente. Sin embargo, hay una forma de hacerlo con Windows Forms: puede usar BringToFront()
y SendToBack()
para cambiar las capas de la ventana en su programa. Mi programa tenía una forma y una consola, la consola tenía que estar al frente, así que envié el formulario a la parte posterior.
Desventaja: si su usuario es multitarea, y desea que la consola esté al frente de todo, esto no funcionará. Sin embargo, si solo desea afectar las ventanas de su programa, esta es una solución adecuada.
- 1. WPF - Traer ventana al frente
- 2. traer ventana emergente al frente
- 3. Cómo traer una ventana CMD.EXE al principio
- 4. traer la leyenda al frente en gnuplot
- 5. Aplicación Java SWT - Traer al frente
- 6. Llevando la ventana al frente en C# usando Win32 API
- 7. Traer JPanel al frente de otros objetos en java (SWING)
- 8. traer datarow al objeto C#
- 9. Actividad actual de la aplicación Android traer al frente
- 10. ¿Cómo traer un primer plano de ventana usando C#?
- 11. Cómo traer curvas específicas en frente de ZedGraph
- 12. Maximice la ventana y llévela al frente con powershell
- 13. traer objeto al flash frontal actionscript 3
- 14. Windows 7: ¿cómo llevar una ventana al frente sin importar qué otra ventana tenga foco?
- 15. ¿Cómo llevar una ventana de WPF al frente?
- 16. Cómo pedir una ventana al frente si no está en la Aplicación en Objective-C
- 17. ¿Cómo hacer que una ventana PyQT4 salte al frente?
- 18. "Traer al frente" para el shell de comandos de Windows XP
- 19. Android Lanzar o traer al frente otra aplicación a través de la intención
- 20. Mostrar/Ocultar la ventana de la consola de una aplicación de consola C#
- 21. iphone mapview traer la primera y la última anotación al frente
- 22. ¿Cómo establecer una ventana de aplicación de consola para ser la ventana más alta (C#)?
- 23. ¿Dibujando en una consola Win32 en C++?
- 24. Traer objetos del código al inspector de objetos
- 25. GCC/C ¿cómo ocultar la ventana de la consola?
- 26. Suprimir la consola al llamar "sistema" en C++
- 27. "Al salir" para una aplicación de consola
- 28. Depuración de C++/SDL con la ventana de la consola
- 29. Título de la ventana de la consola c
- 30. Ocultar ventana de la consola en la aplicación de consola C#
¿En qué contexto y por qué quieres hacer esto? Si bien hay casos legítimos, generalmente este tipo de cosas es más problemático de lo que vale. – ICR