如何在 powershell 中同时处理多个按键? Eg:Windows 标志键 + Alt + PrtScn:
How to handle multiple key press simultaneously in powershell? Eg:Windows logo key + Alt + PrtScn:
在 powershell ISE 中尝试了以下代码,但它仅接受第一个键(按 Win),然后它接受下一个键作为 'g'。
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.SendKeys]::sendwait("(^{ESCAPE})g")
但是我想一次按Win+g打开一些应用程序,比如xbox game bar。
有人可以指导我吗?
无法使用本机 SendWait 方法完成,但我们可以使用 WinAPI 来完成此操作,如下所示 https://social.msdn.microsoft.com/Forums/vstudio/en-US/f2d88949-2de7-451a-be47-a7372ce457ff/send-windows-key?forum=csharpgeneral
$code = @'
namespace SendTheKeys {
class SendIt {
public static void Main(string[] args) {
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
private const int KEYEVENTF_EXTENDEDKEY = 1;
private const int KEYEVENTF_KEYUP = 2;
public static void KeyDown(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0);
}
public static void KeyUp(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
KeyDown(Keys.LWin);
KeyDown(Keys.G);
KeyUp(Keys.LWin);
KeyUp(Keys.G);
}
}
}
'@
Add-Type -TypeDefinition $code -Language CSharp
[SendTheKeys.SendIt]::Main()
在 powershell ISE 中尝试了以下代码,但它仅接受第一个键(按 Win),然后它接受下一个键作为 'g'。
[void][Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
[System.Windows.Forms.SendKeys]::sendwait("(^{ESCAPE})g")
但是我想一次按Win+g打开一些应用程序,比如xbox game bar。
有人可以指导我吗?
无法使用本机 SendWait 方法完成,但我们可以使用 WinAPI 来完成此操作,如下所示 https://social.msdn.microsoft.com/Forums/vstudio/en-US/f2d88949-2de7-451a-be47-a7372ce457ff/send-windows-key?forum=csharpgeneral
$code = @'
namespace SendTheKeys {
class SendIt {
public static void Main(string[] args) {
[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
private const int KEYEVENTF_EXTENDEDKEY = 1;
private const int KEYEVENTF_KEYUP = 2;
public static void KeyDown(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY, 0);
}
public static void KeyUp(Keys vKey)
{
keybd_event((byte)vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
KeyDown(Keys.LWin);
KeyDown(Keys.G);
KeyUp(Keys.LWin);
KeyUp(Keys.G);
}
}
}
'@
Add-Type -TypeDefinition $code -Language CSharp
[SendTheKeys.SendIt]::Main()