Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何使用Win32 API在不激活窗口的情况下模拟按键组合_Windows_Powershell_Vbscript_Sendkeys - Fatal编程技术网

Windows 如何使用Win32 API在不激活窗口的情况下模拟按键组合

Windows 如何使用Win32 API在不激活窗口的情况下模拟按键组合,windows,powershell,vbscript,sendkeys,Windows,Powershell,Vbscript,Sendkeys,我想模拟Ctrl+Alt+L组合键(内存中运行的隐藏进程正在监听)。所以我无法激活不存在的GUI窗口(使用传统的SendKeys) 我似乎在任何地方都找不到一个工作脚本可以帮助我做到这一点。我发现最接近的是下面的按键脚本,它似乎仅限于一个字符的按键(没有组合键) 这是一个使用CTRL+ESCAPE的演示。易于根据您的需要进行修改。 键盘代码列表如下所示: 但是测试时要小心。如果没有正确释放钥匙,可能会出现奇怪的效果 $keyboardEvent = Add-Type –memberDefini

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

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


这是一个使用CTRL+ESCAPE的演示。易于根据您的需要进行修改。 键盘代码列表如下所示:

但是测试时要小心。如果没有正确释放钥匙,可能会出现奇怪的效果

$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

你试过这样的吗?