在Powershell中检测应用程序中的关键按键

时间:2017-09-02 06:02:33

标签: powershell powershell-v2.0 user32

这是一篇可以通过Wayback机器在Powershell.com上找到的帖子。它是从2015年开始,不再在网站上。 它的链接在这里:Detecting Key Presses Across Applications

此帖旨在成为档案。

1 个答案:

答案 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)