Наконец-то я нашел ответ!
ПРЕДУПРЕЖДЕНИЕ: НЕ злоупотребляйте техникой ответа. Это может сбить с толку ваших пользователей и нанести вред работе компьютера в целом. Методика, описанная ниже, может быть очень полезна при определенных обстоятельствах (например, реализация поведения, подобного IntelliSense), но пожалуйста будьте осторожны при его использовании.
Сообщение WM_NCACTIVATE отправляется окну, чтобы изменить состояние его не клиентской области (то есть границы и заголовка) на неактивное или активное. WParam сообщения указывает, будет ли состояние неактивным или активным. Если wParam имеет значение true (значение 1), окно будет выглядеть активным. Если wParam имеет значение false (значение 0), окно будет выглядеть неактивным. Чтобы заставить окно оставаться либо неактивным, либо активным, переопределите wParam, установив для него соответствующее значение (0 или 1), и все будет настроено!
private const int WM_NCACTIVATE = 0x0086;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCACTIVATE)
{
// Use this to make it always look inactive:
m.WParam = (IntPtr)0;
// Alternately, use this to make it always look active:
m.WParam = (IntPtr)1;
}
base.WndProc(ref m);
}