AIMP Forum

AIMP для Windows => Предложения => Topic started by: Cz on April 25, 2018, 00:07:13

Title: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on April 25, 2018, 00:07:13
Собственно, вся информация о предложении написана в заголовке: хочется такой ключ для cmd, который бы эмитировал команду Play/Pause в плеере или небольшая правка логики и ошибок работы текущих ключей.

Для чего лично мне это нужно: появившуюся проблему с запуском AIMP с доп клавиш мыши я описал в этой теме (https://www.aimp.ru/forum/index.php?topic=59489.0). Перепробовав всё что можно, начал искать альтернативы получения функционала, что был раньше. Наткнувшись на ключи cmd в FAQ (https://www.aimp.ru/forum/index.php?topic=259.msg135976#msg135976) решение было найдено: 2 батника, скрытые через WScript.Shell, чтобы не вылезало окно cmd, первый с ключем /PLAY, второй с ключом /PAUSE, запуск которых назначен в винде на определенные сочетания клавиш, а эти сочетания клавиш уже назначены на доп клавиши в мыши (привет костылям))).

И всё бы казалось хорошо, и но за день у данного метода обнаружились некоторые недостатки при возможных 8 сценариях использования разных батников при разном состоянии плеера и проигрывания трека (в автоматике стоит "сохранять состояние плеера при закрытие"):
1) если плеер изначально закрыт и во время закрытия играл трек при запуске батника с /play - трек сбрасывается на начало (что очень бесит)
2) плеер закрыт, играл трек, батник с /pause - трек начинает играть, с того места, где остановился, но интерфейс виснет (в трее значка тоже нет) и помогает только крашнуть процесс через диспетчер задач, запуск батников открывает новый процесс и никак не влияет на проигрывание
3) плеер закрыт, не играл трек, батник с /play - трек запускается с того места, на котором остановился (всё норм, процессы AIMP не плодятся)
4) плеер закрыт, не играл трек, батник с /pause - трек не запускается (что логично), но AIMP опять зависает и плодятся процессы
5) плеер открыт, играл трек, батник с /play - трек сбрасывается на начало (что очень бесит)
6) плеер открыт, играл трек, батник с /pause - трек паузится (всё норм, процессы AIMP не плодятся)
7) плеер открыт, не играл трек, батник с /play - трек продолжает играть с того места, на котором остановился (всё норм, процессы AIMP не плодятся)
8) плеер открыт, не играл трек, батник с /pause - трек продолжает играть с того места, на котором остановился (всё норм, процессы AIMP не плодятся)

все выше описанные сценарии протестировались по 10+ раз. Я понятия не имею, что из описанных выше вариантов так задумано, а что нет, но подводя итоги:
1) если плеер закрыт, и в каком бы состоянии он не был до закрытия, запустить батник с /pause, то AIMP зависает, начинают плодиться процессы и помогает только крашнуть их все.
2) если играет трек (или играл до закрытия плеера), и запустить батник с /play, то трек сбрасывается на начало (лично мне такой вариант очень не нравится и покопавшись в настройках выключить это не удалось, а всегда есть шанс нажать не ту кнопку + щас если выключить плеер с играющим треком (а у меня обычно именно так и бывает) в случае батника с /play - трек сбрасывается, в случае батника с /pause - трек запускается, но плеер виснит - то есть вообще нет шансов на нормальную работу)))

Собственно хочется ключ совмещающий плей и пауз, далее /pp со следующей логикой работы:
плеер закрыт, играл трек, батник с /pp - запустить плеер, продолжить трек с того места, где он остановился
плеер закрыт, не играл трек, батник с /pp - запустить плеер, продолжить трек с того места, где он остановился
плеер открыт, играл трек, батник с /pp - запаузить трек
плеер открыт, не играл трек, батник с /pp - продолжить трек

Ну или, как минимум, хотелось бы фиксов зависания плеера при его открытие с ключем /pause и отключение сбрасывания трека на начало при играющем треке с /play, ибо 4/8 описанных выше сценариев, для меня, работают как надо)))

Автоматика настроена так
(http://i104.fastpic.ru/thumb/2018/0425/f0/86ee58db9f2cc633beaff747b41d15f0.jpeg) (http://fastpic.ru/view/104/2018/0425/86ee58db9f2cc633beaff747b41d15f0.png.html)

Заранее спасибо.
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Artem on April 25, 2018, 00:11:30
У меня никаких зависаний нет, что у вас за плагины стоят?
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on April 25, 2018, 00:13:24
Никаких сторонних + выключены все плагины на визуализацию и Information Bar, Last fm, Scheduler
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Artem on April 25, 2018, 21:38:45
Попробуйте повторить зависание на этой сборке:
https://yadi.sk/d/c3oVLLMv3UeyRy

Как только она зависнет, запустите эту утилиту:
https://yadi.sk/d/LChU4E7zjYuf8

Она выдаст расширенный отчет о проблеме
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on April 26, 2018, 10:54:56
Зависания на этой сборке так же присутствуют, но проблема в том, что они происходят, при запуске программы, когда программа изначально не запущена, о чем было написано выше. А утилита начинает работать только если процесс уже запущен, в противном случае выдаёт ошибку.
На всякий случай снял видос о том, что происходит на сборке, что вы дали https://yadi.sk/i/RD3M1OBR3UnoDf

И да, попробовал в bat'ник с /PAUSE добавить /DEBUG, при этом ничего не зависает. Но потом разобрался, что с этим ключом можно запускать несколько копий программы одновременно и они все независимо друг от друга работают (музыка из всех копий играет), но интерфейс работает только в одном процессе и bat'ники без дебага действует на него (ну то есть паузит/продолжает/сбрасывает трек на начало и тд в этом процессе).
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Soolo on April 26, 2018, 11:01:08
Зависания на этой сборке так же присутствуют, но проблема в том, что они происходят, при запуске программы, когда программа изначально не запущена, о чем было написано выше. А утилита начинает работать только если процесс уже запущен, в противном случае выдаёт ошибку.
Вот когда зависнет - тогда и запускайте утилиту. Не нужно это делать заранее.
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on April 26, 2018, 11:35:42
После зависания первого процесса врубил утилиту, подержал минуту где-то
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Artem on April 26, 2018, 12:00:30
Как процесс повиснет - подождите немного, а потом запускайте утилиту. А то сейчас видно, что процесс обрабатывает команду и вроде ничего подозрительного нет
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on April 26, 2018, 12:14:57
Запустил через минуту, подержал минуту (файл 1.txt).

На всякий случай ещё раз поясню, в чем проблема: когда запускаешь Aimp нормально или через cmd без ключа или с ключом "/play", то иконка запущенного процесса висит в трее, а последующие запуски или открывают интерфейс, или, если запуск через cmd с ключами, реагирует на них, новые процессы не запускаются. В случае же запуска с "/pause" процесс работает (музыка начинает играть, если она играла до закрытия), но в интерфейс вообще нельзя зайти, а каждое повторное открытие любым способом генерирует новый процесс (музыка с них, кстати, не играет) и на них все (включая самый первый) нельзя никак воздействовать, кроме как крашнуть. На всякий случай приложил лог второго процесса, который был запущен после зависания (файл 2.txt)
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Artem on April 27, 2018, 21:42:37
Никак не могу повторить ошибку на своей стороне...
Попробуйте повторить ошибку на этой сборке (я добавил побольше отладочной информации): https://yadi.sk/d/M9xhD5JZ3UrdWk
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on April 28, 2018, 15:37:46
Пожалуйста (файл 1.txt от первого процесса, файл 2.txt от второго)

И я тут случайно обнаружил ещё одну интересную вещь: когда заканчивает играть трек, который был запущен изначально таким образом и переходит на следующий, то закрываются все процессы, кроме первого, и программа возвращается в нормальную работу (то есть запускается интерфейс, не плодятся процессы и запуск с ключами реагирует на эту копию). То есть момент подвисания оказывается идёт от запуска с текущим треком, до его окончания, может вам это поможет...
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Artem on April 29, 2018, 21:35:25
Попробуйте, пожалуйста, еще раз:
https://yadi.sk/d/Yx973RUj3Uw6ki
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on May 02, 2018, 13:26:56
Прошу прощения за длительный ответ... Но щас по ссылке ничего нет)
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Artem on May 02, 2018, 18:59:51
Прошу прощения за длительный ответ... Но щас по ссылке ничего нет)


Я выложил сборку на сайт
Title: Re: Ключ cmd, совмещающий /PLAY и /PAUSE или правка логики текущих ключей
Post by: Cz on May 03, 2018, 00:19:40
Установил, в этой сборке зависаний нет. Благодарю!

И запуск с ключем /play не обнуляет трек, что прекрасно)

Но теперь запуск с ключом /pause перестал продолжать трек, что очень печально)

Так что хотелось бы вернуться непосредственно к сути темы о новом ключе или изменении их работы)

Хотя, в принципе, учитывая что теперь /play только стартует трек без обнуления, а /pause только паузит без других эффектов и нет зависаний, всё уже довольно не плохо)