我正在编写一个控制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);
但我不知道如何构建消息本身,甚至不知道这种方法是否会起作用。
如果我正在咆哮错误的树,那么请告诉我!
答案 0 :(得分:0)
我没试过这个,但是看看你在MSDN上发布的链接+这个页面: http://msdn.microsoft.com/en-us/library/windows/desktop/ee418864(v=vs.85).aspx#WM_INPUT
您似乎需要在C#app中声明结构RAWINPUT,用与您要发送的命令对应的数据填充它,并在lParam中传递指向它的指针。