Winamp QIP 2005 x-status plugin

Наконец-то доделал плагин для популярного плеера Winamp, который был мною задуман еще несколько лет назад. Этот плагин позволяет устанавливать в вашем QIP Classic (2005) статус в зависимости от той композиции, которую вы прослушиваете в Winamp'е. Наверняка, уже достаточно малое количество людей используют этот ICQ-клиент, тем не менее, такие люди еще остались.

С момента создания в плагине имелась довольно неприятная ошибка, точнее, недоработка, которую мне лень было исправлять, поэтому он и лежал так долго без дела. А как известно, QIP 2005 в принципе не имел никакой системы (SDK) для создания плагинов, поэтому приходилось играться с оконными сообщениями (Kaimi предлагал читать и исполнять память процесса, но это еще хардкорнее). Однако, ошибка была исправлена, я добавил пару новых полезных функций, и теперь плагин полностью работоспособен. Выкладываю его вместе с исходниками на MASM32 (без комментариев, но если кому-то будет интересно...): Winamp QIP Classic X-Status Plugin

Ставится плагин так: распаковываем архив и копируем файл gen_qip.dll в папку плагинов Winamp (например, C:\Program Files\Winamp\Plugins), после чего перезапускаем Winamp, идем в настройки (Ctrl+P), заходим в пункт плагинов Plug-ins - General Purpose и видим там в списке плагинов имя QIP-плагина. Двойной клик на имени откроет окно настроек (как выше на скриншоте).

Если кому-то интересны детали работы и то, в чем была проблема...

Плагин:
1. Ищет главное окно программы QIP 2005 с указанным номером ICQ (даже если оно скрыто, оно всегда есть).
2. Ищет окно выставления X-статуса. Оно есть с того момента, как пользователь его хоть раз открыл.
3. Ищет в окне X-статусов все контролы (текстовые поля, выпадающий список и кнопку применения статуса)
4. Использует найденные хендлы для выстановки статуса.
5. Если окно X-статусов или какие-либо контролы на нем не найдены, его надо открыть. Для этого плагин ищет нижнюю панель с кнопками в главном окне QIP и нажимает в ней кнопку открытия этого окна (у кнопки HWND нет, поэтому шлется клик мышкой), после чего окно сразу скрывается. Если панель скрыли, она все равно есть. Однако, если панели нет с запуска программы ("компактный" интерфейс), то и панели не будет.
6. Если панели нет, необходимо на какое-то время открыть обычный интерфейс, затем снова переключив его на компактный. Проще всего это делается с помощью отсылки двойного клика мышкой к верхней панели главного окна QIP'а. Она есть всегда.
7. Перед отсылкой двойного клика необходимо открыть окно QIP'а, если оно было скрыто, иначе он не сработает - панели не появятся. Но и тут есть сложность: простой вызов ShowWindow не прокатит, потому что окно-то отобразится, а вот QIP будет считать, что оно скрыто, и двойной клик не приведет к открытию верхней и нижней панелей. Поэтому используется недокументированное внутреннее сообщение "клик мышкой по иконке QIP в трейбаре" для открытия окна.

Таким образом, в худшем случае при прослушивании в Winamp'е самой первой композиции с момента запуска QIP'а он доли секунды помелькает окошками. При прослушивании последующих композиций этого уже происходить не будет.

Winamp QIP 2005 x-status plugin: 4 комментария

    1. Думаю, что под миранду подобное уже есть, там же нормальная система разработки плагинов, в отличие от старого 2005-го квипа.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *