Перезапуск USB устройства после режима "Сон"
Я обладатель одного занимательного девайса - программируемой клавиатуры Logitech G13. Клавиатура фантастическая, особенно для программиста - можно запрограммировать кучу дополнительных кнопок на определенные действия. Однако с ней есть небольшая проблема - после перевода ПК в режим "Сон" и возвращении из него, она "теряет настройки", а программа управляющая ей не обращает на это внимание, помогает отключение и подключение её к ПК. До недавнего времени я использовал для этого удлинитель, однако теперь все изменилось..
Надо заметить, что данный способ абсолютно не привязан к девайсу, поэтому вы можете использовать его и для других устройств, у которых похожая проблема..
Прежде всего надо разбить задачу на несколько частей:
- Отключение и включение устройства на определенном порту USB
- Написать скрипт который будет делать перезапуск
- Выполнять скрипт сразу после выхода из сна
Поехали по списку..
Отключение и включение устройства на определенном порту USB
Я немного погуглил и нашел программу USBDeview. Последнюю версия можно загрузить с сайта разработчиков: http://www.nirsoft.net или с моего сайта: версия 2.27.
Эта программа умеет отключать и включать USB устройства, простым щелчками мышки:
Таким образом, я смог отключать и подключать свою клавиатурку, что в свою очередь приводило к загрузке профилей и нормальной работе. Теперь нам нужно это оформить в виде скрипта..
Пишем скрипт который будет делать перезапуск
Программа USBDeview хорошо продумана и имеет возможность управления устройствами из консоли, поэтому и с этим пунктом проблем не возникло. У меня получился такой bat скриптик:
1 2 3 4 5 6 |
@echo off start D:\Soft\System\USB\usbdeview-x64\USBDeview.exe /disable_by_pid "046d;c21c" timeout /t 1 /nobreak > nul start D:\Soft\System\USB\usbdeview-x64\USBDeview.exe /enable_by_pid "046d;c21c" |
В нем, я отключаю устройство с идентификатором "046d;c21", потом жду 1 секунду и включаю его. Идентификатор состоит из VendorID и ProductID, найти их можно в соответствующих столбцах программы USBDeview:
Устройства можно указать и другими способами, подробнее об этом написано в мануале в разделе "Disable/Enable/Remove Command-Line Options"
Таким образом, я получил скрипт, запустив который я мог перезапустить USB устройство, а именно перезагрузить свою клавиатурку, чтобы она перезагрузила свои настройки. Теперь мне нужно было делать это автоматически, после выхода Windows из режима "Сон"...
Запуск скрипта после выхода из режима "Сон"
Для этого нужно создать хитрую задачу в планировщике Windows. Делаем следующее:
- Открываем "Панель управления"
- Переходим к отображению всех элементов
- Переходим в раздел "Админимтрирование"
- В нем открываем "Планировщик заданий"
Нам откроется окно, в котором выбираем пункт "Создать задачу":
Теперь в открывшемся окне заполняем следующие поля:
- Вкладка "Общие"
- Имя: USB Restart
- Вкладка "Триггеры", нажимаем "Создать"
- Начать задачу: При событии
- Параметры: Простое
- Журнал: Система
- Источник: Power-Troubleshooter
- Код события: 1
- Включено: должна стоять галочка
- Вкладка "Действия", нажимаем "Создать"
- Действие: Запуск программы
- Программа или сценарий: [указываете-путь-к-скрипту]
D:\Soft\Drivers\Keyboard\Logitech G13\Restart\restart-g13.bat
Вот и все, добавляем задачу нажимая [ОК]. Для наглядности, те же настройки картинками:
Такой метод настройки я подсмотрел тут: How to execute a script on sleep, hibernate, resume, and shutdown в частности там говорится что можно выполнять и команды до отправки в сон, т.е. можно например отключить устройство при переходе в сон, а при выходе его включать:
Try this when the computer returns from Hibernate or Sleep Mode
Begin the Task: On an event Setting Basic Log: System Source: Power-Troubleshooter Event ID: 1 The system has resumed from sleep.
When you put the computer in Hibernate or Sleep Mode Begin the Task: On an event Setting Basic Log: System Source: Kernel-Power Event ID: 42 The system is entering sleep.
Однако я не проверял, такую возможность..
Ещё можно найти нужные событие в оснастке "Управление компьютером" (Пуск>Выполнить>compmgmt.msc) и поставить триггер именно на них. К примеру вот то событие которое я отслеживаю:
Тестирование
После всего этого, я отправил компьютер в "Сон" и при выходе из него скрипт выполнился, клавиатурка перезагрузила профиля и была готова к работе.
Я в очередной раз убедился, что все уже придумали за нас, осталось просто найти эти решения и использовать их.
Author: | Tags: /
| Rating:
12 comments.
Write a comment