使用SendKeys发送Windows密钥

nur*_*can 29 c# keyboard-shortcuts sendkeys

我正在研究C#中的快捷方式.我成功使用SendKeys实现了Ctrl,Alt和Shift.

像这样;

Ctrl+ C:

System.Windows.Forms.SendKeys.SendWait("^c");
Run Code Online (Sandbox Code Playgroud)

Alt+ F4:

System.Windows.Forms.SendKeys.SendWait("%{F4}");
Run Code Online (Sandbox Code Playgroud)

但是我不能用SendKeys发送"Windows Key".我试过ex:Win+ E:.SendWait("#e")但它没有用.我应该使用什么而不是"#"?

谢谢.

yam*_*men 23

确定你真正想要的是这个:http://inputsimulator.codeplex.com/

这已经完成了将Win32 SendInput方法暴露给C#的所有艰苦工作.这允许您直接发送Windows密钥.这是经过测试和运作的:

InputSimulator.SimulateModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_E);

请注意,在某些情况下,您希望专门将密钥发送到应用程序(例如ALT+F4),在这种情况下使用Form库方法.在其他情况下,您希望将其一般发送到操作系统,使用上面的内容.


将此保留在此处以供参考,它将无法在所有操作系统中运行,并且不会始终按您的需要运行.请注意,您正尝试将这些击键发送到应用程序,并且操作系统通常会提前拦截它们.在Windows 7和Vista的情况下,太早(在E发送之前).

SendWait("^({ESC}E)") 要么 Send("^({ESC}E)")

请注意:http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.aspx

要指定SHIFT,CTRL和ALT的任意组合,应按住同时按下其他几个键,封闭代码括号这些键.例如,要指定在按下E和C时按住SHIFT,请使用"+(EC)".要指定在按下E时按住SHIFT,然后按C而不按SHIFT,请使用"+ EC".

请注意,既然你想要ESC和(比如说)同时E按下它们,你需要将它们括在括号中.

  • 很酷,你的gravatar几乎与OP相同.:-P (2认同)

Ali*_*uli 9

从nuget 包下载 InputSimulator 。

然后写下:

        var simu = new InputSimulator();
        simu.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_E);
Run Code Online (Sandbox Code Playgroud)

就我而言,要创建新的垂直桌面,需要 3 个键和如下代码(windows 键 + ctrl + D):

        simu.Keyboard.ModifiedKeyStroke(new[] { VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL }, VirtualKeyCode.VK_D);
Run Code Online (Sandbox Code Playgroud)


小智 5

Alt+F4 仅在括号中起作用

SendKeys.SendWait("(%{F4})");
Run Code Online (Sandbox Code Playgroud)