如何从C#应用程序发送Windows Media Center远程WM_INPUT消息?

时间:2012-08-31 09:41:38

标签: c#

我正在编写一个控制Windows 7的应用程序,尤其是Windows Media Center。我可以发送击键,执行命令等但我想模仿Media Center Remote上的一些按钮。

其中一些是WM_INPUT消息,如下所述:

http://msdn.microsoft.com/en-us/library/windows/desktop/bb417079.aspx

我想以这样的方式发送这些消息,因为任何捕获MCE远程消息的应用程序都可以接收这些消息,以便可以更广泛地使用该应用程序,因此不希望将消息发送到特定的窗口。

我知道其中一些命令可以使用键盘快捷键进行复制,但这些命令在其他应用程序中无效。

有谁知道如何从C#应用程序发送这些消息?

以下是我到目前为止所做的事情:

[DllImport("user32.dll")]
public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

const int WM_INPUT = 0x00FF;
const int HWND_BROADCAST = 0xffff;
const int COMMAND = 0;

PostMessage((IntPtr)HWND_BROADCAST, WM_INPUT, IntPtr.Zero, (IntPtr)COMMAND);

但我不知道如何构建消息本身,甚至不知道这种方法是否会起作用。

如果我正在咆哮错误的树,那么请告诉我!

1 个答案:

答案 0 :(得分:0)

我没试过这个,但是看看你在MSDN上发布的链接+这个页面: http://msdn.microsoft.com/en-us/library/windows/desktop/ee418864(v=vs.85).aspx#WM_INPUT

您似乎需要在C#app中声明结构RAWINPUT,用与您要发送的命令对应的数据填充它,并在lParam中传递指向它的指针。