在 PowerShell 中检测系统范围的 mousedown-events

Detect systemwide mousedown-events in powershell

提问人:Jomme 提问时间:11/7/2023 更新时间:11/7/2023 访问量:52

问:

如何在powershell中检测系统范围的mousedown事件?该脚本应 24/7 全天候运行

到目前为止,我得到了这个:

$key  = 0x01
$Signature = @'
    [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)] 
    public static extern short GetAsyncKeyState(int virtualKeyCode); 
'@
Add-Type -MemberDefinition $Signature -Name Keyboard -Namespace PsOneApi
$f=0
do
{   If( [bool]([PsOneApi.Keyboard]::GetAsyncKeyState($key) -eq -32767))
        { 
            $f++
            #Write-Host $f -ForegroundColor Green 
        }
    
      Start-Sleep -Milliseconds 10

} while($true)

但不知道这是否是最好的方法,因为使用无限循环可能不是管理系统资源的最有效方法。是否有鼠标事件钩子的解决方案,这是否比无休止地轮询正确的键输入有利?

PowerShell WinAPI 事件

评论

0赞 Remy Lebeau 11/7/2023
查看带有钩子的 SetWindowsHookEx()。但我不知道你是否可以在 PowerShell 中使用它。WH_MOUSE/_LL
0赞 marsze 11/7/2023
既然你问了,脚本通常不是应该 24/7 运行的最佳方法,这听起来更像是 Windows 服务。

答: 暂无答案