Powershell模拟键盘
我在使用sendkeys is Powershell时遇到问题。我正在尝试制作一个脚本,它将把键:shift,w,a,s,d发送到游戏中。我正在尝试的代码是:Powershell模拟键盘,powershell,powershell-4.0,powershell-ise,Powershell,Powershell 4.0,Powershell Ise,我在使用sendkeys is Powershell时遇到问题。我正在尝试制作一个脚本,它将把键:shift,w,a,s,d发送到游戏中。我正在尝试的代码是: Add-Type -AssemblyName System.Windows.Forms [System.Windows.Forms.SendKeys]::SendWait(+{w}{a}{s}{d}); 但当我用这个的时候,它只是发送Wasd。它不会改变移动,我可以看到这已经在游戏控制台中发送 有没有办法模拟按键 可以使用以下方法对鼠标
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait(+{w}{a}{s}{d});
但当我用这个的时候,它只是发送Wasd。它不会改变移动,我可以看到这已经在游戏控制台中发送
有没有办法模拟按键
可以使用以下方法对鼠标左键执行此操作:
$signature=@'
[DllImport("user32.dll",CharSet=CharSet.Auto, CallingConvention=CallingConvention.StdCall)]
public static extern void mouse_event(long dwFlags, long dx, long dy, long cButtons, long dwExtraInfo);
'@
$SendMouseClick = Add-Type -memberDefinition $signature -name "Win32MouseEventNew" -namespace Win32Functions -passThru
$SendMouseClick::mouse_event(0x00000002, 0, 0, 0, 0);
$SendMouseClick::mouse_event(0x00000004, 0, 0, 0, 0);
键盘有类似的功能吗?试试这个:
Add-Type -AssemblyName System.Windows.Forms
[System.Windows.Forms.SendKeys]::SendWait("+")
[System.Windows.Forms.SendKeys]::SendWait("{w}{a}{s}{d}")
因此我得到了wasd,所以我想它是有效的。sendKeys方法似乎一次不支持多个字符,因此您需要自动向sendKeys方法发送多个键 经过深思熟虑后,我想到了这一点
Add-Type -AssemblyName System.Windows.Forms
timeout 3
'WASD'.ToCharArray() | ForEach-Object {[System.Windows.Forms.SendKeys]::SendWait($_)}
结果如下:
现在,让我们逐行了解正在发生的事情:
添加类型,就像您之前所做的那样。
接下来是一条三秒钟的超时消息,我在其中快速双击并打开记事本。
最后,我用字符“WASD”生成一个字符串,然后调用system String.ToCharray方法,该方法将字符串转换为字符数组。现在我用的是W,A,S,D,而不是WASD。
对于这些对象中的每一个字母,W,A,S和D,我都调用SendWait静态方法。在ForEach脚本块中,$\符号用于引用当前对象
这是我能想到的最简洁易懂的方法。Hmmm[System.Windows.Forms.SendKeys]::SendWait{t}{y}{e}{t}{h}{I}{s}{p}{l}{e}{a}{s}{e}在这里工作谢谢@FoxDeply的回复,唯一的问题是这不能解决我的问题。游戏似乎不接受SendWait方法。我的球员没有停止移动。但当我打开一个聊天窗口时,它会输入WASD。我认为它必须更像我发送的第二个代码,才能让游戏接受它作为真正的输入。那么,游戏可能会对sendkeys有一些保护。@sodawillow,我很确定,对您回答的问题的其他答案进行否决投票是违反堆栈溢出准则的。我已经对我的投票进行了评论:我只是不同意答案的第一句话:sendKeys方法似乎一次不支持多个字符。如果我违反了这里的规定,我很抱歉。但这显然不是我对投票规则的理解。我现在就去看帮助部分,这里没有讽刺:。此外,我认为这个问题更多的是针对shift键,而不是其他任何东西,但我意识到我弄错了。