Вы можете определить, является ли ваше окно активным, вызвав
[DllImport("user32.dll")] static
static extern IntPtr GetForegroundWindow();
Раньше вы могли звонить
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetForegroundWindow(IntPtr hWnd);
, чтобы установить окно на передний план, но Microsoft изменила его функциональность в Windows ME / 2000 (возможно, это была XP?).
Существуют различные попытки обойти эту проблему, возможно, вам придется протестировать несколько, чтобы увидеть, что работает для вас.
http://www.tek -tips.com / faqs.cfm? FID = 4262
http://markribau.org/blog/?p=7
Я помню, как читал о записи в реестре, которая может быть настроена так, чтобы SetForegroundWindow могла работать как нужно, но это настройка всей системы.
http://www.delphipages.com/forum/showthread.php?t=198261
Вы можете использовать SetWindowPos , чтобы поместить ваше окно за другими окнами или надолго, если это поможет
http://www.pinvoke.net/default.aspx/user32.SetWindowPos
http://msdn.microsoft.com/en-us/library/ms633545(VS.85).aspx