2009-10-02 3 views
1

У меня есть следующая проблема: я хочу, чтобы узнать, является ли окно моего приложения передним планом в Windows. Я использую C#, .Net Framework 3.5 в Windows XP.Как я могу сказать, что мое окно приложения - это окно переднего плана

я на самом деле могу думать о двух способов сделать то, что я после

  1. Использование PInvoke, GetForeGroundWindow и сравнить возвращенное HWND к HWND моей формы
  2. Проверьте Form.ActiveForm является null или ссылка на объект

Метод 1 кажется ОК, но я бы предпочел не использовать pinvoke, если только не должен. Я не совсем уверен в методе 2, хотя, похоже, он работает нормально.

Какой способ использовать, есть ли другой способ?

ответ

3

Появляется ActiveForm - это приложение.

Если вы хотите узнать, является ли ваша форма активной формой для всей ОС, вы застряли в API и сравниваете hWnd.

[System.Runtime.InteropServices.DllImport("user32.dll")]  
public static extern IntPtr GetForegroundWindow(); 
+0

Да - 'ActiveForm' работает в пределах вас«приложение» –

+0

Это не приходила мне в голову, что ActiveForm была специализированной и GetForeGroundWindow OS широко. Я думаю, что в итоге я использовал ActiveForm. –

Смежные вопросы