作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我正在使用 C# 尝试将键盘命令发送到 Windows 7 中的 Windows 媒体中心。
目前我可以发送像 4 这样的键,然后看到数字 4 出现在 Windows 媒体中心上。
问题是任何组合键,如 Ctrl+p(暂停电影)似乎对媒体中心没有任何影响。
如有任何帮助,我们将不胜感激。这是我的代码片段。
// Get a handle to an application window.
[DllImport("USER32.DLL", CharSet = CharSet.Unicode)]
public static extern IntPtr FindWindow(string lpClassName,
string lpWindowName);
// Activate an application window.
[DllImport("USER32.DLL")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
String HandleClass = "eHome Render Window";
String HandleWindow = "Windows Media Center";
private bool SendKeyCommand()
{
bool success = true;
IntPtr PrgHandle = FindWindow(HandleClass, HandleWindow);
if (PrgHandle == IntPtr.Zero)
{
MessageBox.Show(HandleWindow + " is not running");
return false;
}
SetForegroundWindow(PrgHandle);
SendKeys.SendWait("^p");
return success;
}
最佳答案
实际上,我无法通过 VK 类(class)取得任何有用的成果。 MediaCenter 不会响应此 keydown/keyup 内容。
相反,我使用这种方法将媒体中心置于最前面:
[DllImport("user32.dll")]
static extern bool SetForegroundWindow(IntPtr hWnd);
public static void activateMediaCenterForm()
{
System.Diagnostics.Process[] p = System.Diagnostics.Process.GetProcessesByName("ehshell");
if (p.Length > 0) //found
{
SetForegroundWindow(p[0].MainWindowHandle);
}
//else not Found -> Do nothing.
}
之后,SendKeys 应该会起作用。我只是将它包裹在 try/catch 中。
private void SendKey(string key)
{
activateMediaCenterForm();
try
{
SendKeys.SendWait(key);
}
catch (Exception e)
{
//Handle exception, if needed.
}
}
现在 SendKey("{ENTER}");
以及 SendKey("{RIGHT}");
和所有其他键在 Windows 7 上工作得很好。
关于c# - 在 Windows Media Center 中使用 keySend,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3792642/
嘿,我正在使用 C# 尝试将键盘命令发送到 Windows 7 中的 Windows 媒体中心。 目前我可以发送像 4 这样的键,然后看到数字 4 出现在 Windows 媒体中心上。 问题是任何组合
我是一名优秀的程序员,十分优秀!