我希望你们能帮我一把。我有一个用C#编写的小窗口应用程序,它本质上是一个从安卓设备监听HTTP调用的服务器。这个应用程序基本上作为一个遥控器-如果它听到静音,它将静音计算机的音量,等等。我的问题是我在暂停前台应用程序方面遇到了一些问题。我特别想模仿你这些天在这么多键盘上看到的播放/暂停按钮。我这样做的方法是使用(http://inputsimulator.codeplex.com/)来模拟播放/暂停键。不幸的是,我没有得到任何明显的反应--没有什么特别的事情发生。由于害怕设置,我将VirtualKeyCode.MEDIA_PLAY_PAUSE标志切换到静音键标志,并成功地使我的机器静音。请注意,我使用的是,所以我确信它正在监听呼叫。
我想知道的是,在暂停当前播放的任何媒体之前,我还需要做什么额外的设置吗?除了模拟按键之外,还有其他方法来达到我所追求的目标吗?任何帮助都是非常感谢的,伙计们!
发布于 2013-11-19 20:55:18
要模拟按下“媒体播放/暂停”按钮,需要使用WM_APPCOMMAND传递SendMessage消息。
[DllImport("user32.dll")]
extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
int WM_APPCOMMAND = 0x0319;
然后,当您想要模拟按下暂停按钮。
void AppCommand(AppComandCode commandCode)
{
var windowInteropHelper = new WindowInteropHelper(this);
int CommandID = (int)commandCode << 16;
SendMessageW(windowInteropHelper.Handle, WM_APPCOMMAND, windowInteropHelper.Handle, (IntPtr)CommandID);
}
如果您的应用程序不是WPF应用程序,请尝试此函数。
void AppCommand(AppComandCode commandCode)
{
int CommandID = (int)commandCode << 16;
SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, (IntPtr)CommandID);
}
其中命令代码为下列之一:
public enum AppComandCode : uint
{
BASS_BOOST = 20,
BASS_DOWN = 19,
BASS_UP = 21,
BROWSER_BACKWARD = 1,
BROWSER_FAVORITES = 6,
BROWSER_FORWARD = 2,
BROWSER_HOME = 7,
BROWSER_REFRESH = 3,
BROWSER_SEARCH = 5,
BROWSER_STOP = 4,
LAUNCH_APP1 = 17,
LAUNCH_APP2 = 18,
LAUNCH_MAIL = 15,
LAUNCH_MEDIA_SELECT = 16,
MEDIA_NEXTTRACK = 11,
MEDIA_PLAY_PAUSE = 14,
MEDIA_PREVIOUSTRACK = 12,
MEDIA_STOP = 13,
TREBLE_DOWN = 22,
TREBLE_UP = 23,
VOLUME_DOWN = 9,
VOLUME_MUTE = 8,
VOLUME_UP = 10,
MICROPHONE_VOLUME_MUTE = 24,
MICROPHONE_VOLUME_DOWN = 25,
MICROPHONE_VOLUME_UP = 26,
CLOSE = 31,
COPY = 36,
CORRECTION_LIST = 45,
CUT = 37,
DICTATE_OR_COMMAND_CONTROL_TOGGLE = 43,
FIND = 28,
FORWARD_MAIL = 40,
HELP = 27,
MEDIA_CHANNEL_DOWN = 52,
MEDIA_CHANNEL_UP = 51,
MEDIA_FASTFORWARD = 49,
MEDIA_PAUSE = 47,
MEDIA_PLAY = 46,
MEDIA_RECORD = 48,
MEDIA_REWIND = 50,
MIC_ON_OFF_TOGGLE = 44,
NEW = 29,
OPEN = 30,
PASTE = 38,
PRINT = 33,
REDO = 35,
REPLY_TO_MAIL = 39,
SAVE = 32,
SEND_MAIL = 41,
SPELL_CHECK = 42,
UNDO = 34,
DELETE = 53,
DWM_FLIP3D = 54
}
https://stackoverflow.com/questions/18839510
复制相似问题