2015-06-04 74 views
2

我想送按Ctrl + Alt键+ Windows窗体按钮(C#)旋转我的屏幕。这是一个英特尔热键。 当我按下按钮什么都没有发生,但如果我在一个vbs文件中使用几乎相同的命令,它的工作原理。SendKey命令VBS工作,但不是C#

这是C#代码不起作用:

private void button1_Click(object sender, EventArgs e) 
{ 
    SendKeys.Send("^%{LEFT}"); 
} 

VB脚本,不工作:

Set objShell = CreateObject("WScript.Shell") 
objShell.SendKeys "^%{LEFT}" 

我很新的这一切,也许我失去了一些东西明显?

+0

尝试使用'SendKeys.SendWait()' – Bauss

+0

相同的结果。我只注意到send和sendwait都在我的Windows 8电脑上工作,但不在我需要的XP电脑上工作。 – matt0667

+0

按键仅在实际支持此功能的硬件上有效。此外,SendKeys将键击发送到[当前应用程序](https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys%28v=vs.110%29.aspx),而脚本将它发送到您的桌面 –

回答

1

也许是一个括号问题:

SendKeys.Send("^(%{LEFT})"); 

,你可以找到在documentation更多详情其中指出:

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

不知道VBS的行为:我希望C#的非常相同的行为,因为VBS documentation为的SendKeys这么说......

相关问题