windows - 如何在不使用 Win32 API 激活窗口的情况下模拟按键组合
问题描述
我想模拟Ctrl++按键组合(在内存中运行的隐藏进程正在监听)Alt。L所以...我无法激活不存在的 GUI 窗口(使用传统的SendKeys
)。
我似乎无法在任何地方找到一个可以帮助我做到这一点的工作脚本。我发现的最接近的是下面的 Keypress 脚本,它似乎仅限于按单个字符(无组合键)。
https://www.reddit.com/r/PowerShell/comments/3qk9mc/keyboard_keypress_script/
解决方案
这是一个使用 CTRL+ESCAPE 的演示。易于修改以满足您的需求。键盘代码列表在这里: http ://www.kbdedit.com/manual/low_level_vk_list.html
但是在测试时要小心。如果按键没有正确释放,可能会出现奇怪的效果!
$keyboardEvent = Add-Type –memberDefinition @”
[DllImport("user32.dll")]
public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
“@ -name “keyboardEvent” -namespace Win32Functions –passThru
$key_down = 0x00
$key_up = 0x02
$vk_lcontrol = 0xA2
$vk_alt = 0x12
$vk_l = 0x4C
$vk_escape = 0x1B
$vk_windows = 0x5B
# Press CTRL+ESC => Same as Windows Key
[Win32Functions.keyboardEvent]::keybd_event([byte]$vk_lcontrol, [byte]0, [UInt32]$key_down, [UIntPtr]::Zero)
[Win32Functions.keyboardEvent]::keybd_event([byte]$vk_escape, [byte]0, [UInt32]$key_down, [UIntPtr]::Zero)
Start-Sleep 1
# Release CTRL+ESC
[Win32Functions.keyboardEvent]::keybd_event([byte]$vk_lcontrol, [byte]0, [UInt32]$key_up, [UIntPtr]::Zero)
[Win32Functions.keyboardEvent]::keybd_event([byte]$vk_escape, [byte]0, [UInt32]$key_up, [UIntPtr]::Zero)
Start-Sleep 1
推荐阅读
- javascript - 如何根据订单项自定义属性计算价格?
- reactjs - 是的 - 如何检查所有数组是否具有相同的长度
- python - 将 Flatten 层从 PyTorch 转换为 Tensorflow - 等效于 start_dim 和 end_dim
- python - 如何在 python 中使用 plotly 绘制累积数据?
- internationalization - react-intl:使用 .js 文件而不是 .json 文件进行消息存储
- powerbi - 通过编写 DAX 公式查找每个覆盖的通话持续时间
- reactjs - 如何使用钩子进行映射
- assembly - 当我在 nasm 中使用它们时,真正代表什么符号和变量?
- svg - 聚焦、模糊、聚焦、聚焦,不适用于 D3 和 SVG 元素?有替代方案吗?
- raspberry-pi - 将 Raspberry Pi 4 与 EM18 阅读器模块连接