windows - 如何使用 Win32 API 模拟按键组合而不激活 Window

标签 windows powershell vbscript sendkeys

我想模拟 Ctrl+Alt+L 按键组合(内存中运行的隐藏进程正在监听)。所以...我无法激活不存在的 GUI 窗口(使用传统的 SendKeys)。

我似乎无法在任何地方找到可以帮助我做到这一点的单个工作脚本。我发现的最接近的是下面的按键脚本,它似乎仅限于按单个字符(无组合键)。

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

关于windows - 如何使用 Win32 API 模拟按键组合而不激活 Window,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51109750/

相关文章:

powershell - 为什么我可以在空数组上调用 GetType() 而不是从函数返回时调用

batch-file - 如何关闭不可见的VBS文件

mysql - 测试2个mysql数据库字段之间的asp(经典)查询字符串字段

java - 为什么文件是只读的?

c - 如何检查与网络驱动器的连接?

powershell - 如何以字符串形式检索用户UPN后缀

windows - Chef 12 中的默认 SSL 验证如何在 Windows 节点上工作?

powershell - 如何通过远程服务器上的 Invoke-Command 运行多个命令

c# - Windows 资源管理器 Crumb-Bar 控件

PHP - ImageCreate() 错误