Как определить, находится ли текущее окно WPF на переднем плане сеанса пользователя? - PullRequest
4 голосов
/ 01 марта 2011

Я использовал System.Windows.Window.IsActive, чтобы определить, находится ли окно на переднем плане, и в некоторых случаях оно работало. Но я нашел случаи, когда этого не происходит, и мне интересно, есть ли способ обнаружить это.

1 Ответ

3 голосов
/ 01 марта 2011

Приведенный ниже метод работает, за исключением случаев, когда фокус выполняется только на фоновом процессе.Это в случае с рабочим столом Windows.Он крадет статус окна переднего плана, но не на переднем плане.

[DllImport("user32.dll")]
static extern IntPtr GetForegroundWindow();

public bool IsForeground()
{
     Window window = Application.Current.MainWindow;
     IntPtr windowHandle = new WindowInteropHelper(window).Handle;
     IntPtr foregroundWindow = GetForegroundWindow();
     return windowHandle == foregroundWindow;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...