【发布时间】:2015-06-04 20:21:22
【问题描述】:
我正在尝试从 Windows 窗体按钮 (C#) 发送 Ctrl+Alt+Left 来旋转我的屏幕。这是一个英特尔热键。 当我按下按钮时,什么也没有发生,但如果我在 vbs 文件中使用几乎相同的命令,它就可以工作。
这是不起作用的c#代码:
private void button1_Click(object sender, EventArgs e)
{
SendKeys.Send("^%{LEFT}");
}
确实有效的vb脚本:
Set objShell = CreateObject("WScript.Shell")
objShell.SendKeys "^%{LEFT}"
我对这一切都很陌生,所以也许我遗漏了一些明显的东西?
【问题讨论】:
-
尝试使用
SendKeys.SendWait() -
同样的结果。我刚刚注意到 send 和 sendwait 都可以在我的 Windows 8 电脑上工作,但不能在我需要它的 xp 机器上工作。
-
击键仅在实际支持此功能的硬件上有效。此外,SendKeys 将击键发送到the current application,而脚本将其发送到您的桌面
-
两台电脑都在运行英特尔显卡,其 hkcmd.exe 后台进程正在寻找这些按键。奇怪的是为什么我上面使用的c#方法可以在win8上运行,而在xp上不行