Мне нужно запустить мое приложение, когда наше USB-устройство подключено.
Моя первая попытка сделать это — фоновое приложение, которое обращает внимание на подключение USB-устройств. Когда оно замечает, что наше устройство подключено, оно вызывает ShellExecute() и запускает наше приложение.
Это прекрасно работает, за исключением Windows 8. Предположим, что мы находимся на экране «Пуск» в Windows 8. В этой ситуации приложение запускается в фоновом режиме, а начальный экран остается впереди.
Я думаю, что это проблема «фокуса», так как на самом деле я надеюсь «украсть фокус» с начального экрана.
http://blogs.msdn.com/b/oldnewthing/archive/2009/02/20/9435239.aspx
Поскольку у моего фонового приложения нет фокуса (фокус есть на начальном экране; кроме того, у моего приложения нет пользовательского интерфейса), оно не может передать фокус моему приложению переднего плана.
Позвольте мне сказать, что в целом я ненавижу кражу фокуса. Запуск приложения, которое пользователь хочет использовать, очень помогает нашим пользователям.
Как я могу решить эту проблему? Возможно, ответ заключается в том, чтобы программно попросить начальный экран запустить мое приложение, но я не вижу способа сделать это:
Может быть, я подхожу к этому неправильно. Предложения?