这是一篇可以通过Wayback机器在Powershell.com上找到的帖子。它是从2015年开始,不再在网站上。 它的链接在这里:Detecting Key Presses Across Applications。
此帖旨在成为档案。
答案 0 :(得分:2)
通过访问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)