检测Powershell中应用程序之间的按键

检测Powershell中应用程序之间的按键,powershell,powershell-2.0,user32,Powershell,Powershell 2.0,User32,这是一篇文章,可以通过Wayback机器在Powershell.com上找到。它是从2015年开始的,现在已经不在网站上了。 此处有指向它的链接: 这篇文章是要存档的 通过访问Windows低级系统调用,PowerShell可以查询 按键的键盘。下面的示例将等待,直到 用户按下“A”。这是一个简单的例子,不考虑 SHIFT键的状态,也不检查虚拟键。但是, 检测所有打开的应用程序中的按键。那么PowerShell会的 检测一个按下的“a”键,即使它没有焦点,你也可以 在不同的应用程序中输入“A”

这是一篇文章,可以通过Wayback机器在Powershell.com上找到。它是从2015年开始的,现在已经不在网站上了。 此处有指向它的链接:

这篇文章是要存档的

通过访问Windows低级系统调用,PowerShell可以查询 按键的键盘。下面的示例将等待,直到 用户按下“A”。这是一个简单的例子,不考虑 SHIFT键的状态,也不检查虚拟键。但是, 检测所有打开的应用程序中的按键。那么PowerShell会的 检测一个按下的“a”键,即使它没有焦点,你也可以 在不同的应用程序中输入“A”

#requires -Version 2

$signature = @'
[DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
public static extern short GetAsyncKeyState(int virtualKeyCode); 
'@

# load signatures and make members available
$API = Add-Type -MemberDefinition $signature -Name 'Keypress' -Namespace API -PassThru

# wait for 'A'
$waitFor = 'A'
$ascii = [byte][char]$waitFor.ToUpper()

do 
{
  Start-Sleep -Milliseconds 40
} until ($API::GetAsyncKeyState($ascii) -eq -32767)