How do i set a console application to be the top most window. I am building the console application in .NET (i am using C# and maybe even pinvokes to unmanaged code is ok).<
You can P/Invoke SetWindowPos
from the 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();
}
}
You could use FindWindow
with P/Invoke (http://msdn.microsoft.com/en-us/library/ms633499(VS.85).aspx) then somehow set the extended style to use WS_EX_TOPMOST
- see SetWindowLong
at P/Invoke (http://www.pinvoke.net/default.aspx/coredll/SetWindowLong.html ).
However it's all a bit hacky and would recommend creating your own console window using Windows Forms or WPF.