gpt4 book ai didi

c# - 在 Windows Media Center 中使用 keySend

转载 作者:行者123 更新时间:2023-11-30 18:07:45 25 4
gpt4 key购买 nike

嘿,我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com