Как я устанавливаю консольное приложение, чтобы быть самым верхним окном. Я создаю консольное приложение в.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.
Вы можете 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();
}
}
Вы можете использовать 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.