如何在 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()