我正在研究C#中的快捷方式。我成功使用SendKeys实现了Ctrl,Alt和Shift。
喜欢这个;
Ctrl + C :
System.Windows.Forms.SendKeys.SendWait("^c");
或 Alt + F4 :
System.Windows.Forms.SendKeys.SendWait("%{F4}");
但我无法使用SendKeys发送“Windows Key”。我试过ex: Win + E :.SendWait("#e")
但它没有用。我应该使用什么而不是“#”?
感谢。
答案 0 :(得分:22)
确定你真正想要的是: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的任意组合 当按下其他几个键时,请为这些键包含代码 括号中的键。例如,指定按住SHIFT的同时 按下E和C,使用“+(EC)”。指定按住SHIFT的同时 按下E,然后按C而不SHIFT,使用“+ EC”。
请注意,由于您希望同时按下ESC
和(例如)E
,因此您需要将它们括在括号中。
答案 1 :(得分:3)
Alt + F4仅在括号中起作用
SendKeys.SendWait("(%{F4})");
答案 2 :(得分:0)
从nuget package下载InputSimulator。
然后写下:
var simu = new InputSimulator();
simu.Keyboard.ModifiedKeyStroke(VirtualKeyCode.LWIN, VirtualKeyCode.VK_E);
在我的情况下,要创建新的垂直桌面,需要三个键和类似的代码(Windows键+ Ctrl + D):
simu.Keyboard.ModifiedKeyStroke(new[] { VirtualKeyCode.LWIN, VirtualKeyCode.CONTROL }, VirtualKeyCode.VK_D);
答案 3 :(得分:0)
SetForegroundWindow( /* window to gain focus */ );
SendKeys.SendWait("^{ESC}"); // ^{ESC} is code for ctrl + esc which mimics the windows key.