Ответ 1
Чтобы отключить активацию с помощью мыши:
class NonFocusableForm : Form
{
protected override void DefWndProc(ref Message m)
{
const int WM_MOUSEACTIVATE = 0x21;
const int MA_NOACTIVATE = 0x0003;
switch(m.Msg)
{
case WM_MOUSEACTIVATE:
m.Result = (IntPtr)MA_NOACTIVATE;
return;
}
base.DefWndProc(ref m);
}
}
Показать форму без активации (единственный способ, который работал у меня в случае без полей):
[DllImport("user32.dll")]
public static extern bool ShowWindow(IntPtr handle, int flags);
NativeMethods.ShowWindow(form.Handle, 8);
Стандартный способ сделать это (похоже, что он не работает для всех стилей формы):
protected override bool ShowWithoutActivation
{
get { return true; }
}
Если есть другие способы активации формы, они могут быть подавлены аналогичным образом.