Frage

Wie kann ich eine Konsolenanwendung Fenster nach vorne in C # bringen (vor allem, wenn das Visual Studio-Debugger ausgeführt wird)?

War es hilfreich?

Lösung

Es ist Hacky, es ist schrecklich, aber es funktioniert für mich (danke, 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));
        }
    }
}

Andere Tipps

Dies ist, was ich tun würde.

[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()); 
}

Erhalten Sie zwei Monitore (mindestens) und offenes Visual Studio in dem sekundären Monitor. Wenn Sie Ihre App aus Visual Studio ausgeführt wird sie standardmäßig auf dem primären Monitor starten. Da es die letzte App geöffnet wird, beginnt es oben und Wechsel in Visual Studio über hat dies keine Auswirkungen. Funktioniert bei mir jedenfalls.

Wenn Sie nicht bereits über einen zweiten Monitor, IMHO, Sie sollten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top