Russian Qt Forum

Qt => Общие вопросы => Тема начата: 8Observer8 от Сентябрь 02, 2014, 15:59



Название: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 02, 2014, 15:59
Привет!

Один хороший человек поделился кодов с помощью которого можно программно: делать паузу, отключать звук, увеличивать\уменьшать громкость и т.д. Это делается с помощью функций WinAPI:
Код
C++ (Qt)
void MainWindow::emitClickedKey(int key)
{
   // Моделируем нажатие клавиши
   keybd_event( key, 0, 0, 0 );
 
   // Моделируем возврат клавиши в не нажатое состояние
   keybd_event( key, 0, KEYEVENTF_KEYUP, 0 );
}
 

Код
C++ (Qt)
#include <windows.h>
 
#define Key_Media_Play_Pause 0xB3
#define Key_Media_Stop       0xB2
#define Key_Media_Back       0xB1
#define Key_Media_Next       0xB0
#define Key_Media_Mute       0xAD
#define Key_Media_Sound      0xFA
#define Key_Media_VolumeUp   0xAF
#define Key_Media_VolumeDown 0xAE
 

Код
C++ (Qt)
void MainWindow::on_soundButton_clicked()
{
   emitClickedKey( Key_Media_Mute );
}
 
void MainWindow::on_volumeDownButton_clicked()
{
   emitClickedKey( Key_Media_VolumeDown );
}
 
void MainWindow::on_volumeUpButton_clicked()
{
   emitClickedKey( Key_Media_VolumeUp );
}
 

Так вот. Отключение звука, увеличение и уменьшение - работают, а остальные кнопки нет. Может есть специальные драйвера для мультимедийных клавиш? И когда их поставишь все кнопки будут работать?


Название: Re: Программное управление плеером
Отправлено: gil9red от Сентябрь 02, 2014, 16:16
У меня это работало: тестировал на WinXP и Win7 :)


Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 02, 2014, 16:27
Дело в том, что это замечательно работает с "Windows Media Player", а с Winamp'ом - нет.

У меня была старая клавиатура с мультимедийными клавишами. Я мог управлять Winamp'ом. Вопрос: работала бы эта программа с Winamp'ом с мультимедийной клавиатурой? И как сделать что бы работала? Пусть хотя бы с Winamp'ом.


Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 02, 2014, 16:28
gil9red, кстати, большое спасибо за код :)


Название: Re: Программное управление плеером
Отправлено: Bepec от Сентябрь 02, 2014, 16:31
Бгг... Часть системных клавиш работают на систему в целом. Т.е. (мут)/(+/- звука).

А вот (остановка-пауза/следующий трек) должны обрабатываться программой. Так что лезьте в горячие клавиши винампа и там устанавливайте (или включайте) необходимые действия.

В памяти просто висит мутное воспоминание, что в винампе горячие клавиши отключены по умолчанию. Могу и ошибаться :)

PS ставьте aimp - там обработка по умолчанию.



Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 02, 2014, 16:39
Вы про эти? А как я до них "долезу"?

(http://i6.pixs.ru/storage/2/5/9/322png_9963905_13676259.png)


Название: Re: Программное управление плеером
Отправлено: Bepec от Сентябрь 02, 2014, 16:47
Раньше всё настраивалось, сейчас не пользуюсь проигрывателями вообще. vk.com и вперёд песенки гонять :)


Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 02, 2014, 16:55
Я знаю, что есть возможность с помощью WinAPI найти Winamp и послать ему сообщения. По-моему, это называется "хук". Но может есть решение проще?


Название: Re: Программное управление плеером
Отправлено: gil9red от Сентябрь 02, 2014, 17:10
gil9red, кстати, большое спасибо за код :)

На здоровье :D


Название: Re: Программное управление плеером
Отправлено: Bepec от Сентябрь 02, 2014, 17:13
Поясню - если нет настройки горячих клавиш, то винамп ложит кладёт большой большой фиг на мультимедиа клавиши :) Единственное что вы можете сделать - при нажатии мультимедиа клавиш посылать винампу его горячие клавиши.

PS но где то настройка должна быть, или же винамп испортился к чертям :)


Название: Re: Программное управление плеером
Отправлено: gil9red от Сентябрь 02, 2014, 18:04
Дело в том, что это замечательно работает с "Windows Media Player", а с Winamp'ом - нет.

У меня была старая клавиатура с мультимедийными клавишами. Я мог управлять Winamp'ом. Вопрос: работала бы эта программа с Winamp'ом с мультимедийной клавиатурой? И как сделать что бы работала? Пусть хотя бы с Winamp'ом.

Тестировал я кстати на проге AIM3.


Название: Re: Программное управление плеером
Отправлено: Bepec от Сентябрь 02, 2014, 18:08
Во во :)


Название: Re: Программное управление плеером
Отправлено: carrygun от Сентябрь 03, 2014, 04:20
Как-то давно писал управление плеером через интернет. Клиент на Symbian, сервер на Qt управлял плеером через его API. Апишки плеера были на официальном сайте. В качестве плеера был jetaudio. Возможно у winamp'а тоже есть апишки, просто нужно их поискать.


Название: Re: Программное управление плеером
Отправлено: Johnik от Сентябрь 03, 2014, 06:39
Я знаю, что есть возможность с помощью WinAPI найти Winamp и послать ему сообщения. По-моему, это называется "хук". Но может есть решение проще?
Куда уж проще? В каких-то версиях даже в его документации было это описано.

И настройка горячих клавиш у него тоже, вроде как, была.


Название: Re: Программное управление плеером
Отправлено: Bepec от Сентябрь 03, 2014, 07:05
Ну я оставил это на откуп ТСса. Winamp'ом я пользовался году эдак в 2003 что ли :D


Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 03, 2014, 11:57
Всем большое спасибо! Поставил AIM3! Работает! :D

1) Название приложения: MediaCOMport

2) Приложение "слушает" выбранный COM-порт и если попадаются команды, то оно выполняет соответствующие действия:

DADA01 - PlayPause
DADA02 - Stop
DADA03 - Back
DADA04 - Next
DADA05 - Mute
DADA06 - Vol +
DADA07 - Vol -

3) Приложение можно сворачивать в трей:

(http://i6.pixs.ru/storage/1/2/9/323png_8499387_13684129.png)

(http://i7.pixs.ru/storage/1/7/5/324png_2907231_13684175.png)

4) Ещё для тестирования написал приложение GeneratorForMediaCOMport, которое отправляет команды в один из пары замкнутых виртуальных COM-портов:
(http://i7.pixs.ru/storage/2/0/5/325png_4180692_13684205.png)

5) Исполняемые файлы MediaCOMport.exe (вместе с GeneratorForMediaCOMport.exe): ссылка (https://drive.google.com/file/d/0B-h7yRvG539dWVFQbFhZZjR1Ukk/edit?usp=sharing)

6) Исходники:
MediaCOMport: https://github.com/8Observer8/MediaCOMport
GeneratorForMediaCOMport: https://github.com/8Observer8/GeneratorForMediaCOMport


Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 05, 2014, 15:49
А где это?
(http://i6.pixs.ru/storage/4/3/8/329png_2117883_13713438.png)


Название: Re: Программное управление плеером
Отправлено: Bepec от Сентябрь 05, 2014, 18:24
Ухаха :) Скоро и проигрывание музыки отдельным плагином идти будет :)


Название: Re: Программное управление плеером
Отправлено: 8Observer8 от Сентябрь 10, 2014, 07:38
Суть же была в том, чтобы выставить именно глобальные сочетания клавиш.
Я не нашёл меню "По выбору" и "Расширения пользовательского интерфейса" В моей копии Winamp нет возможности поставить галочку "Задействовать глобальные сочетания клавиш"