AIMP Forum
AIMP for Windows => Дополнения / Addons => Разработка / Development => Topic started by: Saliaz on April 02, 2016, 23:13:15
-
Добрый день.
Пытаюсь с помощью Java отправить команду аимпу через библиотеку JNA(В библиотеке реализована возможность работы с WinApi).
Ранее не работал с WinApi и пробую работать с аимпом по примерам, которые нагуглил -_-
Собственно проблема следующая: делаю следующее
public static void main(String[] args) {
//константы
int WM_USER = 0x0400;
int WM_AIMP_COMMAND = WM_USER + 0x75;
//получаем Хандлер
WinDef.HWND HWND = User32Ext.USER32EXT.FindWindow("Taimpmainform", null);
//посылаем команду next
//ID команды next 10 + 7
int res = User32Ext.USER32EXT.SendMessage(HWND, WM_AIMP_COMMAND, 17, 0);
System.out.println("result: " + res);
System.out.println("ERROR: " + Native.getLastError());
System.out.println("accept");
}
и используемый класс для найденный на просторах:
public interface User32Ext extends User32 {
User32Ext USER32EXT = (User32Ext) Native.loadLibrary("user32",
User32Ext.class, W32APIOptions.DEFAULT_OPTIONS);
HWND FindWindowEx(HWND lpParent, HWND lpChild, String lpClassName,
String lpWindowName);
HWND GetTopWindow(HWND hwnd);
HWND GetParent(HWND hwnd);
HWND GetDesktopWindow();
int SendMessage(HWND hWnd, int dwFlags, byte bVk, int dwExtraInfo);
int SendMessage(HWND hWnd, int Msg, int wParam, String lParam);
int SendMessage(HWND hWnd, int Msg, int wParam, int lParam);
LRESULT SendMessage(HWND hWnd, int Msg, WPARAM wParam, LPARAM lParam);
void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
void SwitchToThisWindow(HWND hWnd, boolean fAltTab);
}
результат:
result: 0
ERROR: 0
accept
Подскажите, чего я не правильно делаю, так как аимп не реагирует на команды.
Буду благодарен за помощь.
-
1. В SDK есть документация по Remote API (через сообщения) + пара примеров, правда на дельфе, но код вполне читабельный
2. Как минимум у вас ошибка в том, что вы пытаетесь отправлять сообщения "Taimpmainform", а нужно это делать другому, сервисном окошку: "AIMP2_RemoteInfo"
-
2. Как минимум у вас ошибка в том, что вы пытаетесь отправлять сообщения "Taimpmainform", а нужно это делать другому, сервисном окошку: "AIMP2_RemoteInfo"
и правда ошибка >_<" спасибо заработало :)
Дальше думаю дело пойдет быстрее :-[
Решил реализовать управление плеера на ПК с помощью телефона.
Сейчас реализована серверная часть в JAVA на сокетах для приема кода команды, выполнения роботом эмуляции нажатия, ранее прописанных, комбинаций клавиш и ответ на клиента о выполнении.
И написана программа на Android для передачи команд и приема ответа о выполнении.
Теперь будут корректно переключаться песни, а не через эмуляцию нажатия хоткеев