Как сбросить видеодрайвер без использования сочетания клавиш? (CTRL + SHIFT + WIN + B)

Как сбросить видеодрайвер без использования сочетания клавиш? (CTRL + SHIFT + WIN + B)

Мне нужно сбросить видеодрайвер на машине с Windows 10, работающей на ARM32. Старое распространенное сочетание клавиш (CTRL + SHIFT + WIN + B) работает! да! и издает одиночный звуковой сигнал, как и ожидалось, но клавиатура не всегда будет присутствовать, поэтому мне нужно сделать это через программное обеспечение.

Уже пробовали:

  • Отправка ключей в Windows с помощью Powershell (два способа)
  • Отправка ключей в Windows с помощью приложения Visual C++
  • Утилита приложения Sendkeys, отправляющая комбинацию клавиш
  • Devcon? читайте ниже
  • PnpUtil (читайте ниже)

Все это работает на Windows (проверено, да), но не работает на Windows ARM32, и я не получаю сообщений об ошибках. Возможно, dll или какие-то библиотеки на Windows ARM не позволяют эти функции, в конце концов, я нахожу в других темах разработчиков, что у него нет полной функциональности, а в некоторых местах (официальных) даже упоминаются экспериментальные вещи, в конце концов, Windows 10 (32 бит) никогда официально не выпускалась, только Windows x64 ARM.

Пробовал методы diff, но каждый из них заставляет меня загружать гигабайты данных и библиотек, чтобы создать небольшой exe-файл, который в конце требует 1, 2, 3 дополнительных файла для среды выполнения, которые нигде не могут быть найдены, а когда они находятся... в нерабочее время: он не работает.

Devcon.exe: эта утилита командной строки решила бы мою проблему, но я не могу ее найти. Мне нужно, чтобы она была для ARM32, не могу найти ни одной ссылки на нее. Нашел исходный код, но после нескольких часов настройки VS++ и загадочных руководств, которые я нашел, я всегда получаю какую-то новую ошибку каждый раз, когда пытаюсь собрать его и скомпилировать для ARM32. Проблема связана с Windows Driver Kit, и я нашел различные темы в Интернете о людях, у которых возникли проблемы с его компиляцией. Упоминается, что он содержится в WDK, но после загрузки наборов различий я не смог его там найти. Есть несколько ссылок на x86 и x64, но не на ARM32, официальная документация от Microsoft гласит, что способ получить его - установить WDK, Visual Studio и Windows SDK для настольных компьютеров, но после этого... (часов загрузки, установки и поиска) на моем компьютере его нигде не было.

PnPUtil: опция restart-device должна работать, она документирована и есть во всех версиях Windows с 2004 года (согласно документации MS), но на самом деле, хотя .exe-файл и есть (в Windows), в нем нет этой функции (restart-device), поэтому для моих целей она не подходит.

Любая помощь будет оценена по достоинству.

решение1

Я обновляю этот вопрос, так как нашел ответ, поэтому надеюсь, что это будет полезно и для других. Легко "сбросить" видеодрайвер/дисплей с помощью Powershell, если у вас есть нужные разрешения и привилегии. Как? таким образом:

$d = Get-PnpDevice| where {$_.friendlyname -like "NAME-OF-THE-DEVICE*"};
$d  | Disable-PnpDevice -Confirm:$false;
$d  | Enable-PnpDevice -Confirm:$false

Это отключит устройство, а затем снова включит его, выполнив полный сброс. В зависимости от вашего компьютера экран может мигать (или нет), а также может быть вызван звук «нового обнаруженного оборудования».

Зачем мне это было нужно? потому что Surface RT1 и Surface RT2, обновленные до Windows 10, имеют проблему с отключением управления яркостью через несколько минут после включения, это ошибка официальной невыпущенной версии Windows. То, что я описал здесь, работает и отлично включает управление яркостью. Этого можно добиться отключением/включением видеодрайвера или только дисплея (устройства), как объяснялось, одно вызовет мерцание, другое — нет. В зависимости от случая вам может потребоваться сначала повысить привилегии для вашего скрипта PowerShell.

Я также нашел другие способы добиться этого через код (C#) или sendkeys и другие библиотеки с использованием C++, но это было немного запутанно. Скрипт Powershell решил это легко, затем я просто добавил пользовательскую запланированную задачу, которая будет запускаться при пробуждении.

Вот и все.

Связанный контент