如何在C#中将控制台应用程序窗口置于最前面(特别是在运行Visual Studio调试器时)?
这很糟糕,很可怕,但它对我有用(谢谢,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)); } } }
这就是我要做的.
[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()); }