Определения команд Powershell Sendkeys [char] - PullRequest
0 голосов
/ 14 июля 2020

Были даны ответы об использовании PowerShell для управления Windows настройками (например, регулятором громкости динамика) с использованием следующего метода:

$obj = new-object -com wscript.shell 
$obj.SendKeys([char]173)

Однако я не могу найти никакой информации о том, где они числа (например, 173 выше или 174/175 в ссылке) исходят из того, как они определены и какие другие определения чисел и могут делать.

Можете ли вы направить меня к списку, где даны эти числа как определены действия? Например, как мне узнать, что сделает 172? или 200? et c?

Спасибо, Лоуренс

1 Ответ

2 голосов
/ 14 июля 2020

Несмотря на то, что технически , с точки зрения PowerShell, вы передаете специальный c символ Unicode - с кодовой точкой 173 == 0xAD == SOFT HYPHEN , U+00AD - .SendKeys() по-видимому интерпретирует кодовую точку этого символа (базовое число) как Windows код виртуальной клавиши , представляющий клавиша на клавиатуре , а именно клавиша VK_VOLUME_MUTE (0xAD) в данном случае.

Список всех кодов виртуальных клавиш здесь , хотя мне неясно, какое их подмножество на самом деле можно использовать с .SendKeys().

Резюмируя вопросы из связанных вопросов:

  • [char] 173 is VK_VOLUME_MUTE (0xAD)
  • [char] 174 это VK_VOLUME_DOWN (0xAE)
  • [char] 175 это VK_VOLUME_UP (0xAF)

В стороне: в Windows PowerShell (но больше не в PowerShell [Core] v6 +) кажется, что требуется дополнительное приведение к [string]; например (включает / выключает звук):

# Extra [string] cast is *not* necessary anymore in PowerShell [Core], v6+
(New-Object -ComObject Wscript.Shell).SendKeys([string] [char] 173)
...