首页 > 解决方案 > keybd_event 事件的问题

问题描述

$Signature = @"
[DllImport("user32.dll")]public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
"@
$keybd_event = Add-Type -MemberDefinition $Signature -Name "Win32keybd_event" -Namespace Win32Functions -PassThru


$VK_LSHIFT = 0xA0
$KEYEVENTF_EXTENDEDKEY = 0x0001
$KEYEVENTF_KEYUP = 0x0002

$keybd_event::keybd_event($VK_LSHIFT, 0, $KEYEVENTF_EXTENDEDKEY, 0)
sleep 2
$keybd_event::keybd_event($VK_LSHIFT, 0, $KEYEVENTF_KEYUP, 0)

我期望:按下 shift,等待 2 秒,松开 shift 按钮。

但代码完成后,shift 仍处于“向下”状态(尝试单击控制台或 ISE 中文本的某处)。(解决方法是shift+鼠标左键)

为什么会发生这种情况,如何解决并正确执行?

标签: .netpowershellwinapi

解决方案


推荐阅读