Как вернуть фокус на мое приложение автоматически - PullRequest
3 голосов
/ 16 июня 2011

Я настраиваю простое «загрузочное меню» для моего приложения, в котором (опытный) пользователь может проверять или снимать флажки различных параметров запуска.Меню загрузки представляет собой простую форму без полей, отображаемую в модальном виде и с кнопкой

  • Выйти
  • Продолжить , а также
  • параметры загрузки флажки

Я отображаю это диалоговое окно параметров загрузки при запуске приложения, если пользователь держит клавишу F8 - я обнаружил, что Windows этого не делаетиспользуйте F8, чтобы вы могли фактически удерживать нажатой клавишу F8, нажимая на ярлык для моего EXE-файла, и открывалось мое диалоговое окно загрузки.В этом и заключается проблема.

Моя форма не становится активным приложением - вместо этого открывается окно проводника с ярлыком, на который я нажал.Если я нажму на мою форму (загрузочный диалог), она получит фокус.Как я могу сделать так, чтобы мой диалог загрузки «притягивал» Windows к ее фокусировке?

1 Ответ

7 голосов
/ 16 июня 2011

Как правило, вы не можете сфокусироваться. Из старого журнала Рэймонда Чена:

... оконный менеджер не видит причин, по которым первый экземпляр имеет право занимать передний план. Нет никаких свидетельств того, что первый экземпляр выходит на первый план в ответ на какое-либо действие пользователя.

Существует множество способов решения этой проблемы. Самый простой способ - просто ...

... откровенная кража фокуса - неправильная вещь ...

... То, что нет хорошего способа что-либо сделать, не означает, что вам автоматически разрешено делать это плохим способом.

Проблема в том, что пользователь вводил программу, которая не ваша. Вы не имеете права фокусироваться только потому, что хотите этого.

Возможно, это не тот ответ, который вы хотите, но это ответ. И Microsoft работает трудно расстроить программы, которые пытаются украсть фокус. Любое решение, которое вы придумали, нарушает правила и может не сработать в любой момент в будущем.


... То, что нет хорошего способа что-то сделать, не означает, что вам автоматически разрешено делать это плохим способом.

...