Introduction
You can set running programs to ontop of window stack (application float above other windows).
Using the code
I used Platform Invoke method call SetWindowPos to set selected window to ontop of others and System.Runtime.InteropServices to get Running Applications.
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace OnTop
{
public partial class Form1 : Form
{
[DllImport("user32.dll", SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd,
int hWndInsertAfter, int x, int y, int cx, int cy, int uFlags);
private const int HWND_TOPMOST = -1;
private const int HWND_NOTOPMOST = -2;
private const int SWP_NOMOVE = 0x0002;
private const int SWP_NOSIZE = 0x0001;
public Form1()
{
InitializeComponent();
LoadProcesses();
}
private void LoadProcesses()
{
listBox1.Items.Clear();
Process[] processes = Process.GetProcesses();
this.listBox1.DisplayMember = "MainWindowTitle";
this.listBox1.ValueMember = "MainWindowHandle";
foreach (Process process in processes)
{
if (process.MainWindowTitle.Length >= 1)
{
this.listBox1.Items.Add(process);
}
}
}
private void btnOntopSet_Click(object sender, EventArgs e)
{
if (this.listBox1.SelectedIndex != -1)
{
Process process = this.listBox1.SelectedItem as Process;
SetWindowPos(process.MainWindowHandle,
HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
}
private void btnRefresh_click(object sender, EventArgs e)
{
LoadProcesses();
}
private void btnOntopSetDefault_click(object sender, EventArgs e)
{
if (this.listBox1.SelectedIndex != -1)
{
Process process = this.listBox1.SelectedItem as Process;
SetWindowPos(process.MainWindowHandle,
HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
}
}
}
}
Points of Interest
private static extern bool SetWindowPos(IntPtr hWnd,
int hWndInsertAfter, int x, int y, int cx, int cy, int uFlags);
Changes the size, position, and Z order of a child, pop-up, or top-level window. These windows are ordered according to their appearance on the screen. The topmost window receives the highest rank and is the first window in the Z order.
more info about SetWindowPos()
http://msdn.microsoft.com/en-us/library/windows/desktop/ms633545%28v=vs.85%29.aspx