Что нового

Блокировка клавиатуры через Devcon.exe

saraconor

Новичок
Сообщения
416
Репутация
3
Win7 64. devcon.exe (для 64) лежит в папке скрипта.
Подскажите пожалуйста, как через autoit используя devcon включить \ выключить клавитуру?

Код:
#NoTrayIcon
#RequireAdmin
#include <Misc.au3>
$dev = "USB\VID_046D&PID_C31A"
RunWait(@ScriptDir & '\devcon.exe remove' & $dev & '*', '', @SW_HIDE)

Отключить клавиатуру (disable) почему-то не получается , можно только удалить (remove) устройство, но потом как его обратно поставить через autoit? В диспетчере у клавиатуры кстати нет кнопок "отключить". А вот у мышки есть, и мышь как раз можно таким скриптом выключить (disable).
mx3B4F6.pngmx36D1E.png
Помогите пожалуйста.
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3,557
Репутация
628
А BlockInput не работает?
 
Автор
S

saraconor

Новичок
Сообщения
416
Репутация
3
В общем получается можно удалить устройство через devcon, а обратно вернуть - обновить конфигурацию.
Вопрос, как можно через autoit выяснить id клавиатуры? У меня к примеру он в таком виде: HID\VID_046D&PID_C31A&MI_00
Пожалуйста не игнорьте тему!
 
Последнее редактирование:

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
Run('D:\distr\devcon.exe remove find "HID\VID_046D&PID_C31A&MI_00"')
 
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,951
Репутация
1,446
выяснить id клавиатуры
Попробуйте так
Код:
$Count = RegRead("HKLM\SYSTEM\CurrentControlSet\services\kbdhid\Enum", "Count")
For $i = 0 To $Count - 1
  $Enum = RegRead("HKLM\SYSTEM\CurrentControlSet\services\kbdhid\Enum", $i)
  $HwID = RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\" & $Enum, "HardwareID")
  ConsoleWrite(@CRLF & $HwID & @CRLF)
Next
 
Последнее редактирование:
Автор
S

saraconor

Новичок
Сообщения
416
Репутация
3
Попробуйте так
Код:
$Count = RegRead("HKLM\SYSTEM\CurrentControlSet\services\kbdhid\Enum", "Count")
For $i = 0 To $Count - 1
  $Enum = RegRead("HKLM\SYSTEM\CurrentControlSet\services\kbdhid\Enum", $i)
  $HwID = RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\" & $Enum, "HardwareID")
  ConsoleWrite(@CRLF & $HwID & @CRLF)
Next
Код:
#include <Array.au3>

$Count = RegRead("HKLM\SYSTEM\CurrentControlSet\services\kbdhid\Enum", "Count")
Dim $Dev[$Count]

For $i = 0 To $Count - 1
  $Enum = RegRead("HKLM\SYSTEM\CurrentControlSet\services\kbdhid\Enum", $i)
  $HwID = RegRead("HKLM\SYSTEM\CurrentControlSet\Enum\" & $Enum, "HardwareID")
  ConsoleWrite(@CRLF & $HwID & @CRLF)
  $star = StringSplit($HwID, @CRLF)
  $Dev[$i] = $star[1]
Next

_ArrayDisplay($Dev)

Как-то так.
Скажите, а как можно выяснить удалено устройство из диспетчера, или нет? можно как-нибудь вывести список ID активных устройств?
 
Верх