Blog. Just Blog

Быстрый поиск

Введите фрагмент названия статьи для поиска

Как получить название текущего трека из JetAudio

03.07.2015 | Категория: Образ мышления: Assembler | Автор: ManHunter

Как получить название текущего трека из JetAudio

Если перечислять популярные медиаплееры, то не последнее место в этом списке занимает JetAudio. При разработке своей программы My Music Web Agent я решил добавить в нее возможность получать информацию о воспроизводимом треке и для JetAudio. Можно было пойти по наиболее простому пути: поиск окна проигрывателя, поиск его дочерних элементов, где отображается наименование трека, и так далее. Но у JetAudio, в зависимости от настроек, может быть одновременно большое количество окон. Более того, нет неизменного класса или заголовка окна, эти значения меняются от версии к версии. В итоге я решил обратиться к официальной документации для разработчиков, которая, как ни странно, оказалась весьма подробной.

Итак, получение информации из JetAudio сводится к следующим действиям. Сперва надо найти управляющее окно плеера, оно находится по имени класса "COWON Jet-Audio Remocon Class" и заголовку "Jet-Audio Remote Control", хотя на практике вполне достаточно какого-нибудь одного параметра. Затем этому окну отправляются сообщения нескольких типов: управление состоянием плеера и запросы каких-либо параметров. Нас интересует только получение статуса плеера и названия текущего трека. Сперва надо описать несколько констант, которые используются в коде:
  1. WM_APP = 0x8000
  2. WM_REMOCON_GETSTATUS    = WM_APP+740
  3. GET_STATUS_STATUS       = 1
  4. MCI_MODE_PLAY = 526
  5.  
  6. GET_STATUS_TRACK_TITLE  = 12
  7. GET_STATUS_TRACK_ARTIST = 13
  8. JRC_COPYDATA_ID_TRACK_TITLE  = 0x3001
  9. JRC_COPYDATA_ID_TRACK_ARTIST = 0x3002
Константы для управления или для получения других параметров вы можете посмотреть в файле JetAudio6_API.h, который находится в архиве с SDK.

Читать статью целиком »
Просмотров: 4416 | Комментариев: 0

Исследование защиты программы Machete

12.06.2015 | Категория: Темная сторона Силы | Автор: ManHunter

Скриншот программы Machete

Machete - одна из лучших программ для быстрой нарезки фрагментов из видео- и аудиофайлов. Поддерживается большое количество различных форматов: AVI, FLV, WMV, 3GP, 3G2, MKV, MP4, MOV, WMA, MP3 и WAV. Главной особенностью Machete является то, что файлы не перекодируются, поэтому качество файла после редактирования остается как в исходнике, а скорость работы измеряется секундами. Я сам пользуюсь Machete, чтобы вырезать из любимого сериала рекламу очередного "спонсорского" говносайта. У меня спонсоров нет, за софт я принципиально не плачу, вот и Machete пришлось доводить до ума на предмет абсолютной бесплатности.

Читать статью целиком »
Просмотров: 6474 | Комментариев: 21

Mini 1080P Full HD Media Player

17.06.2012 | Категория: Обзоры техники | Автор: ManHunter

Mini 1080P Full HD Media Player

Очередная посылка от Китая пополнила мой домашний зоопарк техники новым представителем - мультимедийным проигрывателем Mini 1080P Full HD Media Player. Как это принято в лучших традициях китайского приборостроения, каких-то иных маркировок, названий или обозначений обнаружить не удалось, впрочем как и прототипов от более известных брендов. С момента покупки до написания этого обзора у меня было достаточно времени, чтобы протестировать этот девайс со всех сторон, и результатами тестирования я сейчас с вами поделюсь.

Читать статью целиком »
Просмотров: 16127 | Комментариев: 28

Как получить название текущего трека из Winamp и AIMP

01.12.2011 | Категория: Образ мышления: Assembler | Автор: ManHunter
Winamp был и остается самым популярным мультимедийным плеером для Windows. Такая популярность не могла остаться незамеченной, поэтому появились программы, использующие информацию из него в своих целях. Например, плагины для интернет-мессенджеров устанавливают название воспроизводимого трека в качестве статуса, а моя программа My Music Web Agent отправляет эту информацию в интернет. Для взаимодействия сторонних приложений с Winamp был разработан интерфейс API со своими командами и синтаксисом. По какой-то причине разработчики Winamp сейчас вообще убрали с сайта информацию об API, но в интернете эти данные остались. Я приложил описание Winamp Application Programming Interface в архиве с примером программы, рекомендую ознакомиться с ним перед прочтением статьи, чтобы не возникало вопросов откуда взялись те или иные значения.
  1. ; Сегмент данных
  2. section '.data' data readable writeable
  3.  
  4. ; Название класса окна Winamp/AIMP
  5. wcl      db      'Winamp v1.x',0
  6.  
  7. buff     rb 300h  ; Буфер для получения текста из заголовка окна
  8. play_now rb 300h  ; Буфер для получения названия трека
Плеер Winamp, как и другие приложения для Windows, принимает и обрабатывает сообщения, отправляемые ему через SendMessage. Но для этого сперва надо определить хэндл его окна. Сделать это очень просто, окно Winamp всегда имеет название класса "Winamp v1.x", поэтому воспользуемся функцией FindWindow. Дальше надо узнать состояние плеера. Для этого надо послать окну Winamp сообщение WM_USER с wParam = 0 и lParam = 104. Как написано в документации про это сообщение: "Returns the status of playback. If 'ret' is 1, Winamp is playing. If 'ret' is 3, Winamp is paused. Otherwise, playback is stopped." То есть, если вернулось значение не равное 1, то Winamp ничего не воспроизводит или находится в режиме паузы.
  1. ; Сегмент кода
  2. section '.code' code readable executable
  3.         ...
  4.         ; Получить хэндл окна Winamp
  5.         invoke  FindWindow,wcl,0
  6.         or      eax,eax
  7.         ; Окно Winamp не найдено
  8.         jz      .no_winamp
  9.  
  10.         ; Сохранить хэндл окна
  11.         mov     ebx,eax
  12.  
  13.         ; Что-то сейчас воспроизводится?
  14.         invoke  SendMessage,ebx,WM_USER,NULL,104
  15.         cmp     eax,1
  16.         ; Winamp не находится в состоянии "Play"
  17.         jne     .no_winamp
  18.         ...
Окно мы нашли, состояние проигрывателя знаем, осталось получить название трека, который сейчас воспроизводится. Казалось бы все просто - надо послать еще одно сообщение, которое также описано в документации, и получить результат. Но не тут-то было. Сообщения для получения информации о воспроизводимом файле и названии трека доступны только из контекста процесса самого Winamp, то есть могут использоваться только в плагинах Winamp. Логика разработчиков тут не совсем ясна, ведь для сторонних приложений доступна информация о битрейте текущего трека, размере плей-листа, текущей позиции воспроизведения и еще куча другой малополезной информации, а простейшего названия трека нет.

Читать статью целиком »
Просмотров: 7754 | Комментариев: 9

Как сделать несколько звуковых дорожек в AVI-файле

31.08.2011 | Категория: Software | Автор: ManHunter

Как сделать несколько звуковых дорожек в AVI-файле

На многих торрент-трекерах выкладывают фильмы с несколькими звуковыми дорожками, например, дублированный русский перевод и оригинальная озвучка. А еще часто отдельными файлами выкладывают альтернативные переводы. Современные программные плееры без труда могут загружать звуковую дорожку из внешних файлов, но лично мне хочется, чтобы все было в одном файле. Конечно, полный дубляж - это очень хорошо, но иногда хочется вспомнить времена видеосалонов и посмотреть какой-нибудь старый боевичок в гнусавом переводе Володарского или правильном переводе Гоблина. Сейчас я научу вас как легко собрать фильм и все звуковые дорожки в нужном порядке в один файл.

Читать статью целиком »
Просмотров: 43288 | Комментариев: 30

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.06 сек. / MySQL: 3 (0.006 сек.) / Память: 4.5 Mb
Наверх