Как я могу помешать другим приложениям украсть фокус? - PullRequest
4 голосов
/ 18 января 2010

У меня полноэкранное окно со свойством Topmost, установленным в true. Всякий раз, когда приложение меняет свое свойство WindowState, мое окно автоматически сворачивается, даже если оно имеет активный фокус. Например, приведенный ниже код иллюстрирует проблему. Через 3 секунды после того, как окно деактивировано, оно меняется с Минимизировано на Обычное, минимизируя другое полноэкранное приложение.

// Topmost = false
private void Form1_Deactivate(object sender, EventArgs e)
{
    System.Threading.Thread.Sleep(3000);
    this.WindowState = FormWindowState.Normal;
}

Есть ли способ сохранить свойство WindowState полноэкранного окна в таком случае? Я хочу, чтобы пользователь решил минимизировать полноэкранное приложение, поэтому я хочу, чтобы другие программы не воровали фокус.

Ответы [ 3 ]

2 голосов
/ 18 января 2010

Возможно, вы захотите исследовать «Режим киоска» .

0 голосов
/ 18 января 2010

Если это приложение киоска, и вы единственная программа, работающая на компьютере, тогда все в порядке. В противном случае это действительно плохая идея, и поэтому нет документированного способа сделать это. Как говорит Раймунд Чен, этот вопрос должен сопровождаться мысленным экспериментом «что, если две программы сделали это?»:

http://blogs.msdn.com/oldnewthing/archive/2005/06/07/426294.aspx

0 голосов
/ 18 января 2010

Возможно, это то, что вы хотите: Форма Windows в полноэкранном режиме «Режим киоска» .

В противном случае я буду рекомендовать Хенку второе.

...