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
按下它们,你需要将它们括在括号中.
从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)