首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >VirtualKeyCode.MEDIA_PLAY_PAUSE不工作

VirtualKeyCode.MEDIA_PLAY_PAUSE不工作
EN

Stack Overflow用户
提问于 2013-09-16 16:35:19
回答 1查看 1.7K关注 0票数 1

我希望你们能帮我一把。我有一个用C#编写的小窗口应用程序,它本质上是一个从安卓设备监听HTTP调用的服务器。这个应用程序基本上作为一个遥控器-如果它听到静音,它将静音计算机的音量,等等。我的问题是我在暂停前台应用程序方面遇到了一些问题。我特别想模仿你这些天在这么多键盘上看到的播放/暂停按钮。我这样做的方法是使用(http://inputsimulator.codeplex.com/)来模拟播放/暂停键。不幸的是,我没有得到任何明显的反应--没有什么特别的事情发生。由于害怕设置,我将VirtualKeyCode.MEDIA_PLAY_PAUSE标志切换到静音键标志,并成功地使我的机器静音。请注意,我使用的是,所以我确信它正在监听呼叫。

我想知道的是,在暂停当前播放的任何媒体之前,我还需要做什么额外的设置吗?除了模拟按键之外,还有其他方法来达到我所追求的目标吗?任何帮助都是非常感谢的,伙计们!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-19 20:55:18

要模拟按下“媒体播放/暂停”按钮,需要使用WM_APPCOMMAND传递SendMessage消息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[DllImport("user32.dll")]
extern IntPtr SendMessageW(IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam);
int WM_APPCOMMAND = 0x0319;

然后,当您想要模拟按下暂停按钮。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void AppCommand(AppComandCode commandCode)
{
    var windowInteropHelper = new WindowInteropHelper(this);

    int CommandID = (int)commandCode << 16;
    SendMessageW(windowInteropHelper.Handle, WM_APPCOMMAND, windowInteropHelper.Handle, (IntPtr)CommandID);
}

如果您的应用程序不是WPF应用程序,请尝试此函数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
void AppCommand(AppComandCode commandCode)
{
    int CommandID = (int)commandCode << 16;
    SendMessageW(Process.GetCurrentProcess().MainWindowHandle, WM_APPCOMMAND, Process.GetCurrentProcess().MainWindowHandle, (IntPtr)CommandID);
}

其中命令代码为下列之一:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18839510

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文