Хобрук: Ваш путь к мастерству в программировании

Программно закрыть стартовый экран в windows 8

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

Мы гарантируем, что наши тесты всегда начинаются с чистого листа, загружая виртуальные машины с чистого снимка. Когда машины загружаются, у них есть ярлык в меню «Пуск» / папке запуска, который запускает сценарии.

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

Раньше у меня это работало под предварительным просмотром Windows 8 для потребителей. Наши сценарии вызывают IShellDispatch4.ToggleDesktop при запуске, и это приведет к скрытию начального экрана.

В предпросмотре релиза это больше не работает.

Я также пробовал:

  • создание ярлыка для explorer.exe, согласно этой статье. Это не работает.

  • создание ярлыка для заставки, которая вызывает проводник/ToggleDesktop согласно эту статью Howtogeek. Это не работает (похоже, что это, вероятно, просто вызывает IShellDispatch4.ToggleDesktop в любом случае).


Ответы:


1

Похоже, вы уже используете API хоста виртуальной машины для выполнения таких действий, как запуск и остановка виртуальных машин из скрипта. Можно ли использовать тот же API для отправки комбинации клавиш Windows + D на виртуальную машину? Это покажет рабочий стол.

01.06.2012

2

Что я сделал в версии RTM, так это:

Сценарий начальной загрузки запускается и предполагает, что меню «Пуск» займет весь экран. Затем мы используем Win32 SendInput для ввода D E S K T O P и возврата.

29.11.2012

3

В нашей корпорации те же проблемы, и мы только нашли решение. Мы взяли AutoIt и создали скрипт, который нажимает на плитку «Рабочий стол». Затем мы «скомпилировали» AutoIt в исполняемый исполняемый файл, который мы связываем с нашими виртуальными образами в соответствующих папках запуска.

Компилятор Autoit

В нашем скрипте используется команда:

MouseClick("left", x, y)

Где x и y — координаты, находящиеся в плитке рабочего стола. Наши изображения всегда возвращаются к чистому листу (как и ваше), поэтому эта плитка всегда находится в одном и том же положении.

29.11.2012

4

Вот решение, составленное из битов отовсюду.

Идея состоит в том, что мы хотим ввести «рабочий стол», а затем нажать Enter/Return (идея Ориона) и делать это при каждом входе в систему (идея запланированных задач из упомянутой статьи), но избегайте использования пользовательского бинарного файла win32. Мое решение - использовать PowerShell, чтобы избежать двоичного файла win32.

Сохраните следующий скрипт PS в c:\sendkeys.ps1:

[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
[System.Windows.Forms.SendKeys]::SendWait("desktop{ENTER}")

Затем создайте запланированное задание для каждого журнала, в котором запускается Powershell со следующими параметрами:

powershell -executionpolicy bypass -nologo -file c:\sendkeys.ps1
15.01.2013

5

@ Майкл Бисбьерг

Привет! Вы также можете использовать этот код, который нажимает и отпускает клавишу Windows и отправляет вас прямо на рабочий стол:

Send("{LWINDOWN}{LWINUP}")

Джонатан

13.04.2014
  • Этот ответ должен быть комментарием к другому ответу? 13.04.2014
  • Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..