Как заставить проигрыватель Windows Media перейти к предыдущей песне в списке воспроизведения? - PullRequest
0 голосов
/ 18 мая 2010

Я пишу простое приложение для Windows на c ++, которое сможет отправлять команды в Windows Media Player. Моя проблема в том, что я хочу, чтобы мое приложение переместилось на предыдущую песню в списке воспроизведения.

IWMPControls :: previous (), кажется, делает эту работу, но его поведение отличается от того, что написано в msdn. Фактически эта функция перематывает текущий носитель в начало, а затем (если текущая позиция меньше 2-3 секунд) переключается на предыдущую песню.

Я хотел бы реализовать две разные кнопки (пожалуйста, не спрашивайте меня, почему :)) - одну для перемотки в начало и одну - для перехода к предыдущей песне. Есть ли простой способ сделать это с помощью IWMPControls (или любого другого связанного с WMP COM-интерфейса)?

p.s. Я мог бы справиться с этим, если бы мог получить позицию (индекс) текущей песни в списке. Но когда я читаю MSDN, мне кажется, что нет простого способа получить текущий индекс предмета из списка воспроизведения ...

Ответы [ 2 ]

0 голосов
/ 20 мая 2010

Ну, я думаю, я понял это. Вы можете форсировать предыдущую песню: 1) сначала вызов IWMPControls :: put_currentPosition (0.0), 2) затем вызов IWMPControls :: previous ().

Могут возникнуть некоторые проблемы, так как кажется, что между 1) и 2) должно пройти некоторое время. Очевидным решением является использование :: PostMessage () внутри вашей программы (NOT :: PostMessage to WMP), поэтому вы делаете шаг 1), затем PostMessage и, обрабатывая ваше сообщение, шаг 2).

0 голосов
/ 18 мая 2010

Я думаю, что самый простой способ управлять WMP-приложением извне - отправлять сообщения. Итак, вы придерживаетесь базового WinAPI и должны получить дескриптор окна вашего WMP.

После того, как вы получили его дескриптор, легко передать ему определенные команды, используя простые сообщения Windows.

По сути, вы просто вызываете SendMessage для получения ранее HWND wmp_windows_handle. Управляющие сообщения - это, как правило, WM_COMMAND сообщения, где wParam указывает, что вы хотите, чтобы ваш плеер делал.

Например, команда Stop может быть передана, если вы укажете 0x00004979 в качестве wParam.

Придерживайтесь Google или Windows Media Player SDK для получения более подробной информации об этих кодах команд, и вы обязательно найдете то, что ищете.

Также стоит упомянуть, что я не очень разбираюсь в том IWMPS, который вы описали выше, поэтому, если бы я был вами и хотел получить конкретный ответ, я бы, вероятно, сослался на его SDK.

...