Winamp QIP 2005 x-status plugin

Вторник, 11. Сентябрь 2012
Раздел: Assembler, Windows, Софт, автор: dx

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

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

Ставится плагин так: распаковываем архив и копируем файл gen_qip.dll в папку плагинов Winamp (например, C:Program FilesWinampPlugins), после чего перезапускаем 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’а он доли секунды помелькает окошками. При прослушивании последующих композиций этого уже происходить не будет.

Также рекомендую почитать

 Обсудить на форуме

Источник: http://feedproxy.google.com/~r/kaimi/dev/~3/BW9ZZ1P4CSk/

Источник: lred.ru

Оцените статью
новости для мужчин