0 Members and 1 Guest are viewing this topic.
FindWindow(L"Winamp v1.x", NULL);FindWindowA(AIMPRemoteAccessClass, AIMPRemoteAccessClass); // AIMPRemoteAccessClass == "AIMP2_RemoteInfo"
PostMessage(hwndAimp, WM_AIMP_COMMAND, AIMP_RA_CMD_PLAY, 0);
через IAIMPCoreUnit.MessageSend, а экземпляр IAIMPCoreUnit передается плагину при инициализации
HRESULT WINAPI CAddon::Initialize(IAIMPCoreUnit *AController){ float obj = 1.5; float* pnt = &obj; Controller = AController; HRESULT sp = Controller->MessageSend(AIMP_MSG_PROPERTY_SPEED,AIMP_MSG_PROPVALUE_SET,pnt); MessageBox(NULL,(LPCWSTR)sp,L"OK",MB_OK); return 1;}
Попытался изменить свойство SPEED в цикле FOR для постепенного замедления/ускорения.Результат: После первого запуска плеер полностью перестает реагировать на все команды/нажатия кнопок меню/горячих клавиш. Как быть? Возможно, цикл работает настолько быстро, что забивает интерфейс плеера запросами?
*Увеличил шаг счетчика цикла - все стало нормально работать.
Далее, хочется поставить колбэк на AIMP_MSG_EVENT_PLAYER_STATE, чтобы скорость менялась только при старте-остановке.Вопрос: как сделать колбэк? Пользоваться CoreUnit.MessageHook? Не пойму аргументы функции CoreMessage... Можно строчку-пример?
void WINAPI CHook::CoreMessage(DWORD AMessage, int AParam1, void *AParam2, HRESULT *AResult){ if (AMessage == AIMP_MSG_EVENT_PLAYER_STATE) { switch (AParam1) { case 1: for(float i = 1.0; i>=0.5;i-=0.05) { pnt = &i; Controller->MessageSend(AIMP_MSG_PROPERTY_SPEED,AIMP_MSG_PROPVALUE_SET,pnt); Sleep(100); }; break; case 2: for(float i = 0.5; i<=1.0;i+=0.05) { pnt = &i; Controller->MessageSend(AIMP_MSG_PROPERTY_SPEED,AIMP_MSG_PROPVALUE_SET,pnt); Sleep(100); }; break; }; }; Controller->MessageSend(AIMP_MSG_PROPERTY_SPEED,AIMP_MSG_PROPVALUE_SET,fine);};