おーぷんれっくあらーとで放送開始通知を表示する時に、ニコ生アラートっぽく最前面&アクティブにならずにフォームを表示させたかった。
フォームを作成して以下のようにすれば希望通りにできました。
public partial class TopMostForm : Form
{
/* -- 省略 -- */
protected override void OnLoad(EventArgs e)
{
SetTopMost();
base.OnLoad(e);
}
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool SetWindowPos(IntPtr hWnd, IntPtr hWndInsertAfter, int x, int y, int cx, int cy, uint flags);
// 常に最前面に表示
private void SetTopMost()
{
IntPtr HWND_TOPMOST = new IntPtr(-1);
SetWindowPos(this.Handle, HWND_TOPMOST, 0, 0, 0, 0, 0x0010 | 0x0002 | 0x0400 | 0x0001 | 0x0040);
}
// Form#Show()でアクティブにしない
protected override bool ShowWithoutActivation { get { return true; } }
}