首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows Media Center中使用keySend

在Windows Media Center中使用keySend
EN

Stack Overflow用户
提问于 2010-09-25 13:38:37
回答 2查看 1.2K关注 0票数 3

嘿,我正在使用C#向windows7中的windows media center发送关键命令。

目前,我可以发送像4这样的密钥,并在windows媒体中心看到数字4。

问题是,任何像Ctrl+p (暂停电影)这样的组合键似乎对媒体中心没有任何影响。

任何帮助都将不胜感激。这是我的代码片段。

代码语言:javascript
复制
    // 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;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-09-26 03:15:29

实际上,我最终找到了一个在这个网站上有效的解决方案:

http://michbex.com/wordpress/?p=3

我最终使用他的VK类和Remote Sender类方法来解决这个问题。Windows media center必须具有较低级别的键挂钩,并且您必须实现一个keyup/keydown发送解决方案来利用这些挂钩。

我终于可以暂停一部电影了!我将清理代码并在稍后发布它。

票数 0
EN

Stack Overflow用户

发布于 2013-02-15 01:02:34

实际上,我无法使用VK类实现任何有用的东西。MediaCenter不会响应这个keydown/keyup的东西。

取而代之的是,我使用了这个方法来把媒体中心放在前面:

代码语言:javascript
复制
[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上。

代码语言:javascript
复制
private void SendKey(string key)
{
    activateMediaCenterForm();
    try
    {
        SendKeys.SendWait(key);
    }
    catch (Exception e)
    {
        //Handle exception, if needed.
    }
}

现在,SendKey("{ENTER}");以及SendKey("{RIGHT}");和所有其他密钥在Windows7上都能正常工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3792642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档