Как установить окно консольного приложения, чтобы быть самым верхним окном (C#)?

Как я устанавливаю консольное приложение, чтобы быть самым верхним окном. Я создаю консольное приложение в.NET (я использую C#, и возможно даже pinvokes к неуправляемому коду в порядке).

Я думал, что у меня могло быть свое консольное приложение, происходят из класса Формы

class MyConsoleApp : Form {
    public MyConsoleApp() {
        this.TopLevel = true;
        this.TopMost = true;
        this.CenterToScreen();
    }

    public void DoSomething() {
        //....
    }

    public static void Main() {
        MyConsoleApp consoleApp = new MyConsoleApp();
        consoleApp.DoSomething();
    }
}

Однако это не работает. Я не уверен, применим ли набор свойств на форме окон к консоли UI.

8
задан Santhosh 30 July 2010 в 08:56
поделиться

2 ответа

Вы можете P / Invoke SetWindowPos из Windows API:

using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll", SetLastError = true)]
    [return: MarshalAs(UnmanagedType.Bool)]
    private static extern bool SetWindowPos(
        IntPtr hWnd, 
        IntPtr hWndInsertAfter, 
        int x, 
        int y, 
        int cx, 
        int cy, 
        int uFlags);

    private const int HWND_TOPMOST = -1;
    private const int SWP_NOMOVE = 0x0002;
    private const int SWP_NOSIZE = 0x0001;

    static void Main(string[] args)
    {
        IntPtr hWnd = Process.GetCurrentProcess().MainWindowHandle;

        SetWindowPos(hWnd, 
            new IntPtr(HWND_TOPMOST), 
            0, 0, 0, 0, 
            SWP_NOMOVE | SWP_NOSIZE);

        Console.ReadKey();
    }
}
11
ответ дан 5 December 2019 в 15:17
поделиться

Вы можете использовать FindWindow с P / Invoke ( http://msdn.microsoft.com/en-us/library/ms633499 (VS.85) .aspx ), затем каким-то образом установите расширенный стиль для использования WS_EX_TOPMOST - см. SetWindowLong в P / Invoke ( http://www.pinvoke.net/default.aspx/coredll /SetWindowLong.html).

Однако это все немного взломано, и я бы рекомендовал создать собственное окно консоли с помощью Windows Forms или WPF.

0
ответ дан 5 December 2019 в 15:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: