Вы могли бы просто иметь поток, который проверяет Cursor.Position, и когда это 0,0, форма появляется.
Это немного грубо, но установите начальное состояние окна формы на минимизированное значение.
public partial class Form1 : Form
{
private delegate void ShowFormDel();
private readonly ShowFormDel _ShowFormDel;
private bool _CheckForMouse;
public Form1()
{
InitializeComponent();
_CheckForMouse = true;
_ShowFormDel = ShowForm;
Thread x = new Thread(CheckMouseThread);
x.Start();
}
public void CheckMouseThread()
{
while (_CheckForMouse)
{
if (Cursor.Position.X < 5 && Cursor.Position.Y < 5)
{
this.Invoke(_ShowFormDel);
}
Thread.Sleep(1000);
}
}
private void ShowForm()
{
this.Location = new Point(0, 0);
this.WindowState = FormWindowState.Normal;
this.Activate();
this.Visible = true;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
_CheckForMouse = false;
}
private void Form1_MouseLeave(object sender, System.EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
}
}