Powershell Sendkeys [char] 定义

Powershell Sendkeys [char] definitions

关于使用 powershell 控制 Windows 设置(例如扬声器音量控制)的答案已给出,方法如下:

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

但是我找不到任何关于这些数字(例如上面的 173,或 link 中的 174/175)来自何处的信息,以及它们是如何定义的以及其他数字定义是什么以及可以做什么。

你能告诉我这些数字是作为定义的动作给出的吗?例如,我怎么知道 172 会做什么?还是200?等等?

谢谢,劳伦斯

即使技术上,从 PowerShell 的角度来看,您传递的是特定的 Unicode 字符 - 使用 代码点 173 == 0xAD == SOFT HYPHEN,U+00AD - .SendKeys() 似乎将该字符的代码点(基础数字)解释为 Windows virtual-key code,代表键盘上的一个,即本例中的VK_VOLUME_MUTE键(0xAD)案例.

所有虚拟键代码的 列表 here,尽管我不清楚其中哪些子集实际上可用于 .SendKeys()

重述链接问题中的问题:

  • [char] 173VK_VOLUME_MUTE(0xAD)
  • [char] 174VK_VOLUME_DOWN(0xAE)
  • [char] 175VK_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)